Flutter升級到1.8.3版本之后钝荡,網(wǎng)上查到一些混編方案已經(jīng)不能再使用,經(jīng)過兩天的采坑舶衬,整理出最新混編方案埠通。
網(wǎng)上有兩種混編方案,一種官方提供的方案 傳送門:
1. 官方方案的優(yōu)缺點
(1)優(yōu)點:
不需要每次 Run 起來之后逛犹,先進行 同步flutter代碼(組件化Flutter后端辱,因為組件化后flutter代碼已經(jīng)變?yōu)閒ramework,所以每次進來需要先熱更新同步代碼)
不需要單獨搞一個組件進行集成虽画,管理組件的版本舞蔽,發(fā)布等。
(2)缺點:
會非常耦合工程码撰,需要修改工程配置渗柿,添加 BUILD PHASE 調(diào)用 flutter 中xcode_backend.sh腳本去編譯Flutter。(最新官方方案已解決)
如果使用pod管理脖岛,那么還需修改xcconfig配置朵栖。(最新官方方案已解決)
因為需要調(diào)用 Flutter 的編譯腳本,所以這種方式集成后柴梆,團隊內(nèi)所有組員電腦和打包機陨溅,都必須安裝Flutter環(huán)境才能編譯成功。
2.咸魚大神提供的一種方案 傳送門:
(1)優(yōu)點:
不需修改 原有 xcconfig 配置绍在。
不需要添加 Run Script 腳本声登。
運行不需要依賴 Flutter 環(huán)境。
(2)缺點
需要單獨管理一個 flutter私有索引庫揣苏。
開發(fā)加載 Flutter 頁面 首次需要熱更新 進行刷新同步 Flutter 代碼悯嗓。
ps:官方提供的方案更加適合單獨人員開發(fā),咸魚大神提供的方案更加適合團隊協(xié)作卸察,本人是單獨開發(fā)脯厨,所以這里具體介紹官方最新的方案.
準備工作:需要flutter1.8.3以上環(huán)境以及pod,如果flutter低于1.8.3終端運行flutter grade升級flutter
步驟1:
終端打開需要集成flutter的iOS項目同級目錄運行 flutter create -t module flutter_module
創(chuàng)建完成后的目錄結(jié)構(gòu)應該是這樣的:
步驟二:在原生項目Podfile中添加
flutter_application_path = '../flutter_module/'
? load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
install_all_flutter_pods(flutter_application_path)
如果之前沒有使用過pod,在原生項目目錄下終端運行pod init指令自動生成Podfile文件
添加完后運行pod install
步驟3:
因為flutter不支持bitcode坑质,所以要關(guān)閉原生項目bitcode
至此合武,flutter已經(jīng)集成進原生項目中,command+b編譯項目涡扼。
我集成到這里稼跳,發(fā)現(xiàn)項目會報錯,以及引入#import <Flutter/Flutter.h>頭文件會提示文件路徑無法找到吃沪,解決方案使用VSCode或者Android studio打開flutter模塊項目運行一次汤善,或者終端打開flutter模塊路徑下運行
flutter clean
flutter run
因為第一次運行項目,有時flutter.framework尚未生成,導致項目報錯或者路徑未找到,并不是必現(xiàn)红淡,尚未找到具體原因不狮,如果有人找到原因,請留言告知在旱。
原生代碼修改:
AppDelegate.h修改:
AppDelegate.m修改:
flutter入口:
原生與flutter交互:
flutter熱更新:
終端打開flutter模塊路徑下運行flutter attach然后使用xcode運行項目