為您解碼網(wǎng)站建設(shè)的點點滴滴
發(fā)表日期:2018-11 文章編輯:小燈 瀏覽次數(shù):12653
解決方案
在Debug.xcconfig中指定 “FLUTTER_BUILD_MODE=debug”,Release.xcconfig中指定“FLUTTER_BUILD_MODE=release”
錯誤分析
這看起來是在模擬器編譯環(huán)境下選擇了真機的Framework什么的,后來查詢發(fā)現(xiàn)是沒有設(shè)置這個變量。因為工程的Build Phases里運行了<"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh"?build>相關(guān)命令,而xcode_backend里為build_mode變量設(shè)置了默認值"release",這使得在查找Flutter.framework等編譯所需的“原材料”時,默認選擇了release的目錄,導(dǎo)致了這個錯誤,所以,加上debug這個設(shè)置后,會去ios這個目錄中查找相關(guān)文件,就不會有問題了。附目錄截圖:
注:所在目錄 flutter/bin/cache/artifacts/engine/
解決方案
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開發(fā)環(huán)境或者沒有安裝Flutter插件的Android Studio,會報這個錯誤。Flutter是Google開發(fā)的移動開發(fā)SDK,為了方便,基于自己的IDE開發(fā)了Flutter插件,以方便集成過程。在Flutter生成雙端產(chǎn)物的時候,需要經(jīng)過插件做一些操作。
解決方案
執(zhí)行 “flutter doctor --android-licenses” 命令
會問你'Do you want to review the licenses?',輸入“y” 然后 回車,這時再執(zhí)行一次flutter doctor就好了
解決方案
方案一:flutter clean一下,再次 flutter run/build
方案二:將flutter run的進程終止掉重新 flutter run/build
方案三:看看你的FlutterPluginRegistrant產(chǎn)物是否存在,是否更新了
錯誤分析
問題本質(zhì)是Plugin的方法沒有找到,也可能是Plugin本身就沒有注冊成功。老版本的Flutter SDK遇到這個問題可能是沒有觸發(fā)GeneratedPluginRegistrant.register(this),新版本的已經(jīng)不需要手動觸發(fā)了。
解決方案
rm ./flutter/bin/cache/lockfile
錯誤分析
原因是在flutter編譯等操作運行過程中,會創(chuàng)建一個文件鎖,但是由于一些原因鎖沒有釋放導(dǎo)致的,而且一直無法釋放……
解決方案
方案一:如果集成方式是靜態(tài)庫(.a),需要在引用Flutter的工程中,修改Build settings中的Header Search Paths,將Flutter所在目錄加入其中。
方案二:如果集成方式是動態(tài)庫(.framework),說明在引用Flutter的工程中并沒有依賴成功,需要檢查Flutter.framework包內(nèi)是否包含Headers文件夾,是否其中包含F(xiàn)lutter.h,另外就是Podspec和podfile是否正確。還有,Cocoapods必須1.5版本及以上。
方案三:如果你用的podspec.json,試試改寫成podspec(這個坑曾讓我浪費了幾天的時間……)
解決方案
依賴產(chǎn)物只針對 真機 ,但調(diào)試中使用了另一種 模擬器。或者反過來了。
錯誤分析
真機和模擬器的平臺是不同的,符號也不同。
解決方案
方案一:重新pod install
方案二:刪除workspace、podfile.lock、Pods/、~/Library/Developer/Xcode/DerivedData
方案三:
1、運行sudo gem install cocoapods-deintegrate安裝快速解除項目cocopods依賴的庫
2、安裝成功后,cd到你項目的更目錄運行pod deintegrate解除項目cocopods依賴
3、運行pod install,重新安裝cocopods
錯誤分析
Cocoapods的鍋……
解決方案
在podfile中禁止bitcode
錯誤分析
Flutter相關(guān)集成是不支持bitcode的,所以需要將相關(guān)產(chǎn)物的bitcode功能關(guān)閉。如果你的現(xiàn)有工程中倉庫眾多,有的倉庫是必須bitcode的,這樣的話就需要每次pod install之后再在工程配置中手動設(shè)置回來,以下腳本放在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
解決方案
執(zhí)行以下命令
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
解決方案
用Release產(chǎn)物集成
問題分析
為了實現(xiàn)Hot refresh功能,F(xiàn)lutter在Debug下做了很多工作,影響了性能,可以通過修改
FLUTTER_BUILD_MODE的值("debug" => "release")
使用Release產(chǎn)物集成的方式屏蔽這部分影響。注意,flutter_assets是需要同時更新的,Debug產(chǎn)物中含有kernel_blob.bin文件,Release產(chǎn)物則沒有。
解決方案
采用繼承、Category同名方法等方式,覆蓋FlutterViewController的splashScreenView的get方法,直接返回成員變量,將中間的讀取LaunchScreen頁面過程覆蓋掉,甚至可以自定義自己的邏輯。
問題分析
Flutter的渲染是異步的,第一次加載需要創(chuàng)建Application和頁面,無法及時返回結(jié)果,所以Flutter自己把這部分邏輯加到了SDK內(nèi)部,其實是為了解決 “純Flutter App首屏白屏” 問題,但給我們這種混編的App帶來了麻煩。
以上是我們到目前為止遇到的主要坑位,以及解決方案和原因分析,F(xiàn)lutter無論從性能還是人效方面來講,都會在熟悉之后節(jié)省不少成本,希望各位能從我們的經(jīng)驗中節(jié)省更多寶貴的時間。同時,也希望大家把更多的埋坑記錄發(fā)到評論里,幫助友隊一起學(xué)習(xí),一起成長。歡迎技術(shù)交流!
日期:2018-10 瀏覽次數(shù):7265
日期:2018-12 瀏覽次數(shù):4341
日期:2018-07 瀏覽次數(shù):4889
日期:2018-12 瀏覽次數(shù):4186
日期:2018-09 瀏覽次數(shù):5512
日期:2018-12 瀏覽次數(shù):9934
日期:2018-11 瀏覽次數(shù):4821
日期:2018-07 瀏覽次數(shù):4593
日期:2018-05 瀏覽次數(shù):4866
日期:2018-12 瀏覽次數(shù):4334
日期:2018-10 瀏覽次數(shù):5148
日期:2018-12 瀏覽次數(shù):6225
日期:2018-11 瀏覽次數(shù):4478
日期:2018-08 瀏覽次數(shù):4601
日期:2018-11 瀏覽次數(shù):12652
日期:2018-09 瀏覽次數(shù):5593
日期:2018-12 瀏覽次數(shù):4846
日期:2018-10 瀏覽次數(shù):4200
日期:2018-11 瀏覽次數(shù):4539
日期:2018-12 瀏覽次數(shù):6075
日期:2018-06 瀏覽次數(shù):4016
日期:2018-08 瀏覽次數(shù):5448
日期:2018-10 瀏覽次數(shù):4465
日期:2018-12 瀏覽次數(shù):4544
日期:2018-07 瀏覽次數(shù):4370
日期:2018-12 瀏覽次數(shù):4508
日期:2018-06 瀏覽次數(shù):4397
日期:2018-11 瀏覽次數(shù):4385
日期:2018-12 瀏覽次數(shù):4258
日期:2018-12 瀏覽次數(shù):5296
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.