1.Flutter-Multiple commands produce
问题分析
使用Xcode 10构建所有Flutter项目都会有该问题。在使用插件时,有两个竞争构建操作将Flutter.framework复制到构建应用程序Frameworks目录中:
解决方案
①.将XCODE的编译系统改为legacy build system
,如下图所示
②.使用新的Xcode 10构建系统。
- 打开ios / Runner.xcworkspace
- 在项目导航器侧栏中选择Runner项目。
- 在主视图中,选择Runner目标,然后选择Build Phases选项卡。
- 展开Embed Frameworks阶段并从嵌入式框架列表中选择Flutter.framework。
- 单击 - 从列表中删除Flutter.framework(确保保留App.framework)。
2.进行Flutter开发时,设备连接一直显示loading…
1、先连接网络(在打开flutter工程时好像需要检查什么东西,所以尽量在有网的情况下打开,等可以调试了再断网应该也没问题)
2、在任务管理器的详细信息中,关闭所有的dart进程(关闭卡死的进程,避免在下次运行命令时进程被锁)
3、重启开发工具(重启)
3. Gradle task assembleDebug failed with exit code 1
解决方案
- 终端执行
flutter clean
重新运行run
4.Waiting for another flutter command to release the startup lock
原因分析:
这个错误发生于在编译器里get package,等了很久没有获取到package之后,我果断关掉了AS,打开终端输入了flutter doctor但是出现了这个错误。
解决方法如下:flutter/bin/cache/lockfile
- 打开flutter的安装目录/bin/cache/
- 删除lockfile文件
- 重启AndroidStudio
5. The 'Pods-Runner' target has transitive dependencies
原因:
打包iOS 时 使用了
flutter_flipperkit
这个插件,就会报错,移除掉该插件就好了,这个插件之针对Andropid 调试使用
5.IOS上打包后出现could not create Dart VM
因为你没有生成flutter_assets相关文件,所以导致Dart代码没有打进包里
解决方法:在打包前运行一下命令,生成的文件不用管,继续你的操作
flutter build ios --release
6.use_frameworks报错
use_frameworks!
-> dynamic frameworks 方式 -> .framework
#use_frameworks!
-> static libraries 方式 -> .a
oc工程的podfile一般是不使用use_frameworks!的,swift和自己创建的lib库是默认有的
7.设备的CPU架构
模拟器:
- 4s~5 : i386
- 5s~6plus : x86_64
真机:
- 3gs~4s : armv7
- 5~5c : armv7s (静态库只要支持了armv7,就可以跑在armv7s的架构上)
- 5s~6plus : arm64
8.Flutter Navigator.pop 报错 _debugLocked isNotTrue
解决办法:
1.1.Using .isFirst method:
Navigator.of(context).popUntil((route) => route.isFirst);
1.2. Using defaultRouteName:
Navigator.popUntil(context, ModalRoute.withName(Navigator.defaultRouteName));
9.'_positions.isNotEmpty': ScrollController not attached to any scroll views.
// 滑动卡片
ScrollController _cardScontroller = ScrollController();
void toBottom() {
Future.delayed(Duration(milliseconds: 0), () {
if (_cardScontroller.hasClients){
/// 滑动到底部
_cardScontroller.jumpTo(_cardScontroller.position.maxScrollExtent);
}
});
}
10.Run Configuration Error: Broken configuration due to unavailable plugin or invalid configuration data.
原因分析:
Flutter 插件未找到,导致无法以Dart方式启动
解决办法:
选择-Preferences-Plugins-> 打开Flutter选项,restart AndroidStudio,即可。
11.INSTALL_FAILED_USER_RESTRICTED: Install canceled by user Error: ADB exited with exit code 1
直接使用Android studio run 到小米设备的时候遇到上述问题
原因:小米在mi-ui10 上加了 usb 安装 apk 的限制。
解决办法:
- 设置==》更多设置==》开发者选项》USB安装
- 打开即可,注意打开这个要登录小米账号才行。
- 在手机上点击继续安装即可(第一次安装需要)
12.Waiting for another flutter command to release the startup lock… 异常解决
cd /Users/xxx/flutter/bin/cache/
删除 lockfile
文件即可
13.BUILD TARGET url_launcher OF PROJECT Pods WITH CONFIGURATION Debug
报错明细
=== BUILD TARGET url_launcher OF PROJECT Pods WITH CONFIGURATION Debug ===
/Users/liyan/software/flutter/.pub-cache/hosted/pub.flutter-io.cn/simple_permissions-0.1.9/ios/Classes/SimplePermissionsPlugin.m:2:9: fatal error: 'simple_permissions/simple_permissions-Swift.h' file not found
#import
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
原因分析
进入flutter_project/ios/,编辑Podfile,添加
use_frameworks!
关键是use_frameworks!
13.数据模型解析时无法定位是哪个属性报错
原因分析
因为使用了try catch 导致无法具体定位
解决办法
注释掉try catch 即可
举例
'List
数据类型本来是List ,你定义成了 String
///获取匹配成功列表(匹配历史)()
static Future getPairHistoryList() async {
try {
var r = await httpManager.request2(
'$base/get_pair_list',
isStubApi: true,
);
List list = [];
r.data['enrolls'].forEach((friend) {
list.add(PairEnrollModel.fromJson(friend));
});
return DaoResponse>(
data: list, code: r.code, message: r.message);
} catch (e) {
print('==========${e.toString()}');
throw DaoException(e);
}
}
14.Failed to open or create the artifact cache lockfile
问题描述
Flutter OS Error: Permission denied, errno = 13,
Failed to open or create the artifact cache lockfile
问题分析
flutter lockfile 路径没有权限,需要给他制定权限
执行以下命令
sudo chmod -R 755 /Users/hujintao/flutter/bin/cache/lockfile
# 并且删除掉 lockfie文件,重启即可
rm -r ./lockfile