最近项目在使用Flutter,记录一下过程中遇到的问题及解决方案:
1、在Android Studio中运行App时,如果卡在“Running 'gradle assembleDebug”时间过长,是因为
Gradle中Maven仓库默认使用国外仓库, 可以使用阿里云的镜像地址:
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
需要修改两处:
第一处需要修改项目中的build.gradle文件。
第二处需要修改Flutter安装目录下gradle文件(Flutter安装目录/packages/flutter_tools/gradle/flutter.gradle)中的仓库地址。
buildscript {
repositories {
// google()
// jcenter()
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
}
}
2、
问题:Android Studio 版本3.6.3,创建的模拟器运行一段时间后,再次启动时,遇到一直黑屏的情况,点击开/关机按钮没有反应。
解决方案:在模拟器编辑界面,点击“Show Advanced Settings”按钮,显示详细配置,修改“Boot option”为“Cold boot”,保存后重启即可正常使用。
原因:Android Studio 创建的模拟器默认使用Quick boot方式,该方式每次关闭时,会创建一个模拟器的运行状态,重新启动后会恢复到上次的状态。如果上次关闭模拟器时状态异常,则重新启动模拟器时就会一直黑屏。
3、常用命令
查看当前连接的设备列表 flutter devices
打开ios虚拟机 open -a Simulator
运行项目 flutter run
在所有链接设备上运行 flutter run -d all
启动后
r 热重载
R 重新启动
d 断开
q 退出应用
4、报错:<item> inner element must either be a resource reference or empty.
查到报错的地方:
<item name="about_version_code" type="id">false</item>
上面这种方式已经不能这么写了,新的方法如下:
<item name="about_version_code" type="id"/>
如果引入的是第三方包,不能对第三方包进行修改时怎么办呢?
解决方案:
1) 在项目res\values文件夹下新建ids.xml
文件。
2) 将之前编译出错的item重新写一遍,改成下面的内容:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="about_version_code" type="id"/>
</resources>
重新build之后AS会自动处理这些问题。
5、报错:A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
我的项目是将Flutter作为子模块引入进android项目。遇到这类错误,是gradle版本问题。前一天没注意,升级了主项目的gradle版本到最新的3.6.3,第二天发现报错,我查看了一下Flutter子模块使用的gradle版本是3.5.0,然后修改主模块的版本为3.5.0,所以以后升级gradle时还是要注意一下。