集成-現(xiàn)有App集成Flutter(iOS篇)

一、混合開發(fā)場(chǎng)景
原生頁(yè)面可以打開Flutter頁(yè)面

Flutter頁(yè)面可以打開原生頁(yè)面

二、Flutter混合開發(fā)的集成步驟(以數(shù)據(jù)大腦項(xiàng)目為例)

1.創(chuàng)建Flutter Module
在做混合開發(fā)之前,我們首先需要?jiǎng)?chuàng)建一個(gè)Flutter Module。

這里建議Flutter Module的創(chuàng)建目錄和原生工程的目錄同級(jí)。假設(shè)Native的目錄是這樣的:xxx/Native項(xiàng)目。

cd xxx/
flutter create -t module flutter_module

可以看到生成的flutter_module目錄下有這些文件:

README.md                  pubspec.lock
flutter_module.iml         pubspec.yaml
flutter_module_android.iml test
.android         lib               .ios

上面的.android和.ios目錄,是隱藏文件, 也是這個(gè)flutter_module的宿主工程。因?yàn)橛兴拗鞴こ痰拇嬖冢@個(gè)flutter_module在不添加額外配置的情況下是可以獨(dú)立運(yùn)行的:

.android:flutter_module的Android宿主工程;
.ios:flutter_module的iOS宿主工程;
lib:flutter_module的Dart部分的代碼;
pubspec.yaml:flutter_module的項(xiàng)目依賴配置文件。

2.為已存在的iOS原生項(xiàng)目添加Flutter Module依賴
2.1.在Podfile文件中添加依賴:

flutter_application_path = "../flutter_module"
eval(File.read(File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding)

如下圖


17_05_16__08_22_2019.jpg

2.2.安裝依賴:
在項(xiàng)目的根目錄中,執(zhí)行如下指令:

pod install

2.3.禁用Bitcode:
目前Flutter還不支持Bitcode,所以集成了Flutter的iOS項(xiàng)目需要禁用Bitcode。


992921-20190527115015687-1831269676.png

2.4.添加Build Phase來構(gòu)建Dart代碼

"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed

添加完之后,要將這個(gè)Run Script拖動(dòng)到Target Dependencies phase下面,接下來就可以運(yùn)行項(xiàng)目了

腳本.png

以下為集成踩坑記錄

踩坑1. 此時(shí)運(yùn)行項(xiàng)目如果報(bào)以下錯(cuò)誤

17_22_23__08_22_2019.jpg

解決方案:Build Settings → User-Defined , Add User-Defined Setting,創(chuàng)建FLUTTER_ROOT ,將你的Flutter SDK路徑寫入即可

屏幕快照 2019-08-22 下午5.25.40.png

添加完成之后


屏幕快照 2019-08-22 下午5.29.00.png

踩坑2.項(xiàng)目成功編譯后,正常會(huì)生成Flutter.framework 和 App.framework ,如果沒有生成,需要手動(dòng)拖入到工程中,文件路徑如下圖:

屏幕快照 2019-08-22 下午5.42.55.png
屏幕快照 2019-08-22 下午5.43.25.png

拖入到工程中,此處注意選擇 Create groups

屏幕快照 2019-08-22 下午5.46.15.png

踩坑3.如果遇到以下崩潰問題

屏幕快照 2019-08-22 下午5.39.05.png

解決方案 選中TARGETS → General → Embedded Binaries 添加 App.framework 和 Flutter.framework

如下圖:


屏幕快照 2019-08-22 下午5.49.28.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容