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、重啟開發工具(重啟)
如果以上都不奏效,可重置AndroidSDK
flutter config --android-sdk /Users/xxx/Library/Android/sdk
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 <simple_permissions/simple_permissions-Swift.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
原因分析
進入flutter_project/ios/,編輯Podfile,添加
use_frameworks!
關鍵是use_frameworks!
13.數據模型解析時無法定位是哪個屬性報錯
原因分析
因為使用了try catch 導致無法具體定位
解決辦法
注釋掉try catch 即可
舉例
'List<dynamic>' is not a subtype of type 'String'
數據類型本來是List ,你定義成了 String
///獲取匹配成功列表(匹配歷史)()
static Future getPairHistoryList() async {
try {
var r = await httpManager.request2(
'$base/get_pair_list',
isStubApi: true,
);
List<PairEnrollModel> list = [];
r.data['enrolls'].forEach((friend) {
list.add(PairEnrollModel.fromJson(friend));
});
return DaoResponse<List<PairEnrollModel>>(
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