flutter升級到1.0(mac環境,其餘環境一致)

估計有不少小夥伴像我同樣早早的就體驗了flutter,而後拋棄了,看到發佈1.0,又想搗鼓一番;android


1.不要使用pub getpub upgrade命令來管理你的依賴關係。相反,應該使用flutter packages getflutter packages upgradeios

2.使用flutter時報錯「Error: Unable to 'pub upgrade' flutter tool:git

找到clone下來的flutter庫, 刪除bin目錄下的cache文件夾github

export PUB_HOSTED_URL=pub.flutter-io.cnjson

export FLUTTER_STORAGE_BASE_URL=storage.flutter-io.cnxcode

git clone -b dev github.com/flutter/flu…app

export PATH="$PWD/flutter/bin:$PATH"異步

cd ./flutteride

flutter doctorpost



參考:https://flutter.io/community/china

https://flutterchina.club/upgrading/







如下內容爲轉載

做者:否極泰來_2662
連接:https://www.jianshu.com/p/bf3002de6a5e
來源:簡書

1、運行Xcode編譯或者flutter run/build 過程當中報錯:"x86_64" is not an allowed value for option "ios-arch".

解決方案

在Debug.xcconfig中指定 「FLUTTER_BUILD_MODE=debug」,Release.xcconfig中指定「FLUTTER_BUILD_MODE=release」

錯誤分析

這看起來是在模擬器編譯環境下選擇了真機的Framework什麼的,後來查詢發現是沒有設置這個變量。由於工程的Build Phases裏運行了<"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build>相關命令,而xcode_backend裏爲build_mode變量設置了默認值"release",這使得在查找Flutter.framework等編譯所需的「原材料」時,默認選擇了release的目錄,致使了這個錯誤,因此,加上debug這個設置後,會去ios這個目錄中查找相關文件,就不會有問題了。附目錄截圖:

注:所在目錄 flutter/bin/cache/artifacts/engine/

2、Flutter plugin not installed; this adds Flutter specific functionality. Dart plugin not installed; this adds Dart specific functionality

解決方案

1.) Start the Android Studio application

2.) Open plugin preferences (Preferences>Plugins on macOS, File>Settings>Plugins on Windows & Linux).

3.) Select Browse repositories…, select the Flutter plug-in and click install .

4.) Click Yes when prompted to install the Dart plugin.

5.) Click Restart when prompted.

錯誤分析

若是你使用的是iOS開發環境或者沒有安裝Flutter插件的Android Studio,會報這個錯誤。Flutter是Google開發的移動開發SDK,爲了方便,基於本身的IDE開發了Flutter插件,以方便集成過程。在Flutter生成雙端產物的時候,須要通過插件作一些操做。

3、Android license status unknown

解決方案

執行 「flutter doctor --android-licenses」 命令

會問你'Do you want to review the licenses?',輸入「y」 而後 回車,這時再執行一次flutter doctor就行了

4、MissingPluginException(No implementation found for method xxx on channel xxx)

解決方案

方案一:flutter clean一下,再次 flutter run/build

方案二:將flutter run的進程終止掉從新 flutter run/build

方案三:看看你的FlutterPluginRegistrant產物是否存在,是否更新了

錯誤分析

問題本質是Plugin的方法沒有找到,也多是Plugin自己就沒有註冊成功。老版本的Flutter SDK遇到這個問題多是沒有觸發GeneratedPluginRegistrant.register(this),新版本的已經不須要手動觸發了。


5、Waiting for another flutter command to release the startup lock

解決方案

rm ./flutter/bin/cache/lockfile

錯誤分析

緣由是在flutter編譯等操做運行過程當中,會建立一個文件鎖,可是因爲一些緣由鎖沒有釋放致使的,並且一直沒法釋放……


6、'Flutter/Flutter.h' file not found

解決方案

方案一:若是集成方式是靜態庫(.a),須要在引用Flutter的工程中,修改Build settings中的Header Search Paths,將Flutter所在目錄加入其中。

方案二:若是集成方式是動態庫(.framework),說明在引用Flutter的工程中並無依賴成功,須要檢查Flutter.framework包內是否包含Headers文件夾,是否其中包含Flutter.h,另外就是Podspec和podfile是否正確。還有,Cocoapods必須1.5版本及以上。

方案三:若是你用的podspec.json,試試改寫成podspec(這個坑曾讓我浪費了幾天的時間……)


7、error: cannot parse the debug map for xxx: No such file or directory

解決方案

依賴產物只針對 真機 ,但調試中使用了另外一種 模擬器。或者反過來了。

錯誤分析

真機和模擬器的平臺是不一樣的,符號也不一樣。


8、diff: /../Podfile.lock: No such file or directory

解決方案

方案一:從新pod install

方案二:刪除workspace、podfile.lock、Pods/、~/Library/Developer/Xcode/DerivedData

方案三:

一、運行sudo gem install cocoapods-deintegrate安裝快速解除項目cocopods依賴的庫

二、安裝成功後,cd到你項目的更目錄運行pod deintegrate解除項目cocopods依賴

三、運行pod install,從新安裝cocopods

錯誤分析

Cocoapods的鍋……


9、Flutter Bitcode

解決方案

在podfile中禁止bitcode

錯誤分析

Flutter相關集成是不支持bitcode的,因此須要將相關產物的bitcode功能關閉。若是你的現有工程中倉庫衆多,有的倉庫是必須bitcode的,這樣的話就須要每次pod install以後再在工程配置中手動設置回來,如下腳本放在podfile中能夠解決此問題。

post_install do |installer|

installer.pods_project.targets.each do |target|

if target.name =="App" || target.name =="Flutter"

target.build_configurations.each do |config|

config.build_settings['ENABLE_BITCODE'] ='NO'

end

end

end

end


10、module importing failed: ('invalid syntax', ('temp.py',xxx

解決方案

執行如下命令

brew update

brew uninstall --ignore-dependencies libimobiledevice ios-deploy cocoapods

brew uninstall --ignore-dependencies usbmuxd

brew install --HEAD usbmuxd

brew unlink usbmuxd

brew link usbmuxd

brew install --HEAD libimobiledevice

brew install ideviceinstaller ios-deploy cocoapods

11、Flutter集成到現有工程後,性能問題

解決方案

用Release產物集成

問題分析

爲了實現Hot refresh功能,Flutter在Debug下作了不少工做,影響了性能,能夠經過修改

FLUTTER_BUILD_MODE的值("debug" => "release")

使用Release產物集成的方式屏蔽這部分影響。注意,flutter_assets是須要同時更新的,Debug產物中含有kernel_blob.bin文件,Release產物則沒有。

12、iOS系統中,第一次從Native跳轉到Flutter頁面時,會出現LaunchScreen

解決方案

採用繼承、Category同名方法等方式,覆蓋FlutterViewController的splashScreenView的get方法,直接返回成員變量,將中間的讀取LaunchScreen頁面過程覆蓋掉,甚至能夠自定義本身的邏輯。

問題分析

Flutter的渲染是異步的,第一次加載須要建立Application和頁面,沒法及時返回結果,因此Flutter本身把這部分邏輯加到了SDK內部,實際上是爲了解決 「純Flutter App首屏白屏」 問題,但給咱們這種混編的App帶來了麻煩。

相關文章
相關標籤/搜索