一、混合開發(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)
如下圖

2.2.安裝依賴:
在項(xiàng)目的根目錄中,執(zhí)行如下指令:
pod install
2.3.禁用Bitcode:
目前Flutter還不支持Bitcode,所以集成了Flutter的iOS項(xiàng)目需要禁用Bitcode。

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)目了

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

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

添加完成之后

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


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

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

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