写点什么

Flutter 填坑全面总结(包括 Flutter1

用户头像
Android架构
关注
发布于: 刚刚


(5)gradle 更多版本,可以访问 gradle 官网 services.gradle.org/distributio… ,找到对应版本进行下载(无需翻墙,可直接下载):


(6)关于 Build Tools 版本的一些建议,建议下载 Android SDK Platform 不同版本 以及对应的 Build Tools 版本。


操作方式:File --> Settings --> Appearance & Behavior --> System Settings --> Android SDK,重点关注 SDK Platform 和 SDK Tools


关键详细信息截图如下:



更多关于 gradle 有关的问题,可以看我的博客Android Studio3.0填坑指南, 如果这里未提到的,请看这里全面总结Android Studio2.X的填坑指南



1、【大坑,切记】Flutter 目录的 dart sdk 和 [dart 官网](dart.dev/get-dart

) 直接下载的 dart sdk 安装包是不兼容的,不要把 dart 官网直接下载的 dart sdk 安装包直接放到 flutter 安装路径里面。


注:flutter 是通过 flutter doctor 命令自动下载 dart sdk 的,每一个版本的 flutter 自带有一个版本的 dart sdk,我们不要自己去修改 dart sdk 版本,我们也不要替换掉 flutter 安装路径里面的 dart sdk。你在 dart 官网单独下载的 dart sdk 放到 flutter 目录里面 是没用的。


具体踩坑过程,请看我去年发布的视频,里面有详细讲解:Dart开发前端页面基础教程1

2、Flutter 项目一定要放在英文路径里面,否则会报错,如图所示:

3、Flutter 初次创建项目一直进不去,错误如图所示:


【解决方式】首先关掉当前已经打开的 Android Studio 进程,然后打开 Android Studio 安装目录下的 bin 目录,找到 idea.properties 文件,在文件最后追加以下这行代码,disable.android.first.run=true ,然后保存,以后再次打开 Android Studio 创建项目就不会卡住了。请看下图所示:




4、执行 flutter doctor -v 命令出现Android linceses status unknown的提示。

  • 这里我遇到过两种不同的情况:


【问题 1:】执行 flutter doctor -v 命令出现Android linceses status unknown的提示。



【问题分析:】新下载的 sdk 没有同意 Android 协议。


【解决方案:】按错误提示所说的那样,执行命令flutter doctor --android-licenses,然后出现的提示让你选择 y/n,你只要输入y,然后回车,一直坚持到最后就好了。


【问题 2:】执行 flutter doctor -v 命令出现Android linceses status unknown的提示,但是奇怪的是我执行命令flutter doctor --android-licenses,自动就修复了。



【解决方案:】执行命令flutter doctor --android-licenses,奇怪的是这里并没有让我输入其他的命令,自动修复了。不知道电脑抽了什么风。




5、下载使用别人的开源库,使用 Android Studio 打开报错,让你下载一大堆库。

【注意】这里下载的包名包含有 google,intellij,apache,jetbrains 之类的关键字。这样的大量出现一定是 Android Studio 版本号不匹配的问题。如果说是使用的第三方库没有下载下来,会提示某个库名称,让你下载的。这个需要注意了。


如图所示:



【原因分析】因为别人使用的 Android Studio 版本号和你使用版本号不一致。


【解决方案】查看 Android Studio 版本号在本文开头有介绍。然后打开项目的android/build.gradle,找到dependencies,然后修改步骤如下:


比如别人使用的是3.3.1版本,而你电脑使用的是3.2.1版本,那么你把3.3.1改成3.2.1,重新运行一下项目就正常了。


? 修改前:


dependencies {classpath 'com.android.tools.build:gradle:3.3.1'}


? 修改后:


dependencies {classpath 'com.android.tools.build:gradle:3.2.1'}



6、Waiting for another flutter command to release the startup lock... 这个问题的解决

【问题分析:】你开启新的 flutter 进程时,后台有一个 flutter 进程没有关闭,导致的冲突。

【解决方案:】关闭后台 dart 进程,关闭 IDE,然后重新打开 IDE,运行项目,运行到设备试试看,基本问题不大了。 (一句话:重启基本能解决问题

7、Flutter 运行项目 一直卡在 Initializing gradle...不能动了


【问题分析:】镜像的原因导致的,国内访问不了谷歌,需要翻墙。


【解决方案:】


**方案 1:**翻墙试试看。


如果不行尝试就看看方案 2: 打开项目根目录/android/,找到build.gradle文件,打开,首先注释掉google()jcenter(),然后在下方添加一行代码maven { url 'https://maven.aliyun.com/repository/google' } ,这个是阿里云的镜像,构建速度会快一些,具体放置位置如下所示:


buildscript {repositories {//google()//jcenter()// 新增一行代码 放在这里 maven { url 'https://maven.aliyun.com/repository/google' }}


dependencies {classpath 'com.android.tools.build:gradle:3.1.3'}}


allprojects {repositories {// 注释掉 google()和 jcenter()//google()//jcenter()// 新增一行代码 放在这里 maven { url 'https://maven.aliyun.com/repository/google' }}}


rootProject.buildDir = '../build'subprojects {project.buildDir = "{project.name}"}subprojects {project.evaluationDependsOn(':app')}


task clean(type: Delete) {delete rootProject.buildDir}


如果还是不行的话,那就把google()或者jcenter()的注释取消,逐个尝试看看,那三个镜像总有一个是可以使用的。


方案 3: 方案 2 中的国内镜像设置之后还是卡住,建议看看是不是同时开了翻墙工具。国内镜像和翻墙工具会冲突,用了国内镜像,建议关闭翻墙工具


**方案 4:(无奈之计)**最近帮朋友看了这个问题,前面几项都试过了,还是很卡,最后一看电脑配置,AMD 的 CPU,吐我一口老血,编程开发多年,一直是 intel 的 CPU(因为 android sdk 有一个 intel 加速工具),intel 的 cpu 跑项目更快,AMD 的刚开始做开发用过,特别卡,放弃了,换成了 intel 的一直用到现在。如果是 AMD 的 CPU,建议换成 intel 的 CPU,当然如果你条件好,建议买个 mac 更好



8、初次创建项目,一片红,怎么办?如图所示:


【原因分析】项目说需要的用到的依赖库还没有下载下来,所以爆红。


【解决方案】点击右上角的Get depencies镜像下载相关的库。这时候可以看到下方的命令窗口显示:“running flutter packages get in xxx”,耐心等待即可。



9、点击Get depencies后者命令行输入flutter packages get结果卡住了,想要的库下载不下来怎么办?

【原因有很多】:


(1)没有正确安装 flutter 环境,比如没有执行flutter doctor命令去下载 dart sdk,导致一些相关的 dart 库爆红或者下载不下来。


解决:建议执行flutter doctor命令去下载 dart sdk


(2)没有配置国内镜像和创建相关缓存文件夹。导致下载很慢。


在 C 盘的 Flutter 缓存目录,具体为:C:\Users\Administrator\AppData\Roaming\Pub\Cache\hosted,这里面默认是一个名为 pub.dartlang.org 的文件夹,我们现在查找看看有没有叫做 pub.flutter-io.cn 的文件夹,如果有,为了省事,建议把pub.dartlang.org的文件夹里面的文件全部 拷贝到 pub.flutter-io.cn 文件夹里面就可以了。如果没有,就创建一个名为 pub.flutter-io.cn 的文件夹,然后再执行拷贝工作。一般来讲,配置了国内镜像的话,就会有 pub.flutter-io.cn 文件夹(不知道怎么配置的点击这里进行查看: Flutter配置安装详解)。以后如果再下载其他的库,都会缓存在pub.flutter-io.cn 文件夹里面。



10、Unable to find git in your PATH

错误如图所示:



【原因】未配置 git 环境变量或者配置不对。正确的应该是找到git根路径\bin ,比如你的路径是:E:\git\bin,你就把这个路径配置到环境变量中。



11、SocketException: OS Error 信号灯超时时间已到


建议:设置国内镜像,然后重启试试看。实在不行就翻墙试试看。



12、flutter 不是内部或者外部命令,也不是可运行的程序或者处理文件。

![](https://user-gold-cdn.xitu.io/2019/10/11/16dba4777035713b?imageView2/0/w


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


/1280/h/960/ignore-error/1)


【解决方案】把Flutter添加到环境变量。具体的请查看这里:开发工具总结(10)之Flutter从配置安装到填坑指南详解,有详细图文说明。



13、模拟器运行白屏问题

【解决方案有很多种,可以根据实际情况自由选择:】


(1)如果用的是 Genymotion 模拟器,或者其他的模拟器,可能原因是集成显卡驱动没装好,如果缺少某个驱动,建议下载驱动精灵或者品牌官网驱动安装,然后再运行模拟器试试看。


(2)如果用的是 Genymotion 模拟器,可能是 virtualbox 的版本与 genymotion 版本不兼容引起的。建议下载自带 virtualbox 的 genymotion 版本再试试看。


(3)打开模拟器设置界面,run->Edit Configurations 里面添加--enable-software-rendering 再次运行就 OK 了。


(4)建议新建模拟器时,不要勾选硬件加速,这个一般用不上,硬件加速巨坑,与某些东西不兼容。可以在 AS 右上角找到 Android 模拟器管理,找到对应的模拟器,看看你的模拟器设置里面是否有硬件加速,如果有,就换成其它的。


(5)使用原生平台的冷启动方案。Flutter 已经提供了冷启动方案,下面是一个最简单的示例:


【注意】:有些人编辑android里面的 xml 文件的时候,会发现部分是红色的,其实你可以点击菜单open,然后选择你项目里面的android目录,然后在弹出的窗口选择open in new window,表示新开一个窗口,这样去编写代码,不会出错。


完整示例代码请查看:github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/flutter_white_screen


drawable 目录有一个launch_background.xml文件,我们打开之后可以看到一个注释,意思是说:这里面的内容可以换成你的 App logo 或者其它内容,我们可以做一个修改,内容如下:


最后一步是修改styles.xml文件,添加两个配置 item 选项,示例如下:


具体的文件目录位置如下图:



最终示意图如下所示:




14、安装项目到模拟器或者手机时,Gradle task assemableDebug executing之后 log 停止并自动退出安装,然后应用安装不到模拟器或手机上。

问题如图所示:



【原因】:Flutter 版本太低了。 【解决方案】使用flutter upgrade更新 Flutter。



15、git clone 下载 Flutter 源码仓库,出现 error: RPC failed; curl 18 transfer closed with outstanding read data remaining


【原因】


由于 Http 协议错误,当 Clone 的时候,因为 curl 的 postBuffer 默认值太小的原因,而项目可能本身比较大,所以下载失败。


【解决方案:】


打开 git 命令行 输入?git config –global http.postBuffer 524288000,然后可以输入git config –list?查看刚才的设置是否生效。


说明:?git config –global http.postBuffer 524288000 命令的意思:相当于把 curl 的 postBuffer 的值修改的大一些。524288000 的单位是 B,相当于 500MB。



16、执行 flutter 命令的时候,360 杀毒软件弹窗提示有病毒。


【解决方案:】


点击右下角 信任此文件 即可。建议执行 flutter 工程的时候,暂时关闭杀毒软件,如图所示。 有时候升级 flutter 的时候也会爆出这样的问题,建议关闭杀毒软件。



17、执行 flutter install 命令安装 apk 到模拟器的时候报错,报错提示是:


【原因】由于使用了native libraries 。该native libraries不支持当前的 cpu 的体系结构。我当前用的是 x86 的模拟器。


【解决方案】打开项目根目录/android/app/build.gradle,在 android 节点里面添加以下内容:


splits{abi?{enable?truereset()include?'x86',?'armeabi-v7a','x86_64'universalApk?true}}


具体的请看下图所示:



如果以上操作还不行就换一个 arm 的模拟器或者真机运行。如下图就是运行在 arm 模拟器上的示范操作:




18、执行 flutter upgrade 命令过程中出现的问题。


【解决方案】重启命令行,重新执行 flutter upgrade 命令,它会自动下载 sdk 需要的各种工具,这说明环境是没问题的,配置也是没问题的,网络也是 OK 的。如下图所示:




19、编译项目的过程中出现的版本兼容问题,如图所示。


【解决方案有以下几种方式】


只要看到错误信息含有which doesn't match any version?这样的提示基本都可以使用以下解决方案:


  • Flutter 插件版本太老,更新一下 Flutter 版本,再试试看。

  • 2.? 在项目的根路径的 pubspec.lock 文件和 pubspec.yaml 文件里面搜索,确保 pubspec.lock 文件的引入的第三方插件库的版本号pubspec.yaml 文件里的 版本号一致

  • 项目里面引入的第三方插件库版本和开发环境不匹配导致的兼容问题。建议把第三方插件库的源码下载下来,放到项目里面去,然后去 修改插件库源码里依赖的Flutter和Dart版本配置信息 即可。使用源码是最好的解决方式。

  • 在 C 盘的 Flutter 缓存目录,具体为:C:\Users\Administrator\AppData\Roaming\Pub\Cache\hosted,这里面默认是一个名为 pub.dartlang.org 的文件夹,我们现在查找看看有没有叫做 pub.flutter-io.cn 的文件夹,如果有,为了省事,建议把 pub.dartlang.org 的文件夹里面的文件全部 拷贝 到 pub.flutter-io.cn 文件夹里面就可以了。如果没有,就 创建 一个名为 pub.flutter-io.cn 的文件夹,然后再执行拷贝工作。(一般来讲,配置了国内镜像的话,就会有 pub.flutter-io.cn 文件夹)。


然后检查一下文件夹里面有没有我们报错的那个包,如果有,请删除,然后再去点击 pub get 下载更新一下。如图所示:




20、flutter upgrade 因为版本兼容问题导致升级失败。


【解决方案】这里面是因为 flutter_tools 包的兼容性问题 导致的,可能是 sdk 版本兼容性问题,我们可以执行 flutter upgrade 升级一下 Flutter 再试试看,如果不行,就按上一条的去做。



21、Unsupported Android Studio version,意思是:Flutter 插件不支持当前 AS 版本。


【原因】


当前的 AS 是 3.2 的版本。Flutter 插件对 AS3.2 暂时还不兼容(此问题是我在第一次创建 flutter 的时候出现的,时间是 2018 年 5 月份,不过现在 flutter 插件已经兼容 AS3.2 了,现在貌似没有出现这个问题了。)。


以后如果还有更新的 AS 版本出来,只要 Flutter 插件没有及时更新的话,可能还会有版本兼容的提示信息。


【解决方案】


使用 3.0 或者 3.1 版本的 AS 开发就 OK 了。



22、执行 flutter upgrade 命令更新 Flutter 时,出现 SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054


【解决方案】


打开 git 命令行输入?·git config –global http.postBuffer524288000·,然后可以输入 ·git config –list·?查看刚才的设置是否生效。



23、使用 flutter doctor 命令出现的错误,这类错误可能有多种形式,它们都有一个共同的关键字 StartBitsTransferCOMException

我遇到的几个不同的错误示例图如下:


【解决方案】?原因有 2 个:


(1)BITS 传输服务未开启:


计算机 --> 右键?管理?-->?服务和应用程序里面,点击服务,然后如下图所示:



然后选中图中标记的这个,右键点击属性,然后改成自动,确定。如下图所示:



(2)没有设置国内镜像:


如果你在国内使用 Flutter,那么你可能需要找一个与官方同步的可信的镜像站点,帮助你的 Flutter 命令行工具到该镜像站点下载其所需的资源。你需要为此设置两个环境变量:PUB_HOSTED_URL和FLUTTER_STORAGE_BASE_URL,然后再运行 Flutter 命令行工具。

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Flutter填坑全面总结(包括Flutter1