Flutter升級到1.8.3版本之后,網上查到一些混編方案已經不能再使用,經過兩天的采坑,整理出最新混編方案。
網上有兩種混編方案,一種官方提供的方案 傳送門:
1. 官方方案的優缺點
(1)優點:
不需要每次 Run 起來之后,先進行 同步flutter代碼(組件化Flutter后,因為組件化后flutter代碼已經變為framework,所以每次進來需要先熱更新同步代碼)
不需要單獨搞一個組件進行集成,管理組件的版本,發布等。
(2)缺點:
會非常耦合工程,需要修改工程配置,添加 BUILD PHASE 調用 flutter 中xcode_backend.sh腳本去編譯Flutter。(最新官方方案已解決)
如果使用pod管理,那么還需修改xcconfig配置。(最新官方方案已解決)
因為需要調用 Flutter 的編譯腳本,所以這種方式集成后,團隊內所有組員電腦和打包機,都必須安裝Flutter環境才能編譯成功。
2.咸魚大神提供的一種方案 傳送門:
(1)優點:
不需修改 原有 xcconfig 配置。
不需要添加 Run Script 腳本。
運行不需要依賴 Flutter 環境。
(2)缺點
需要單獨管理一個 flutter私有索引庫。
開發加載 Flutter 頁面 首次需要熱更新 進行刷新同步 Flutter 代碼。
ps:官方提供的方案更加適合單獨人員開發,咸魚大神提供的方案更加適合團隊協作,本人是單獨開發,所以這里具體介紹官方最新的方案.
準備工作:需要flutter1.8.3以上環境以及pod,如果flutter低于1.8.3終端運行flutter grade升級flutter
步驟1:
終端打開需要集成flutter的iOS項目同級目錄運行 flutter create -t module flutter_module
創建完成后的目錄結構應該是這樣的:
步驟二:在原生項目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,所以要關閉原生項目bitcode
至此,flutter已經集成進原生項目中,command+b編譯項目。
我集成到這里,發現項目會報錯,以及引入#import <Flutter/Flutter.h>頭文件會提示文件路徑無法找到,解決方案使用VSCode或者Android studio打開flutter模塊項目運行一次,或者終端打開flutter模塊路徑下運行
flutter clean
flutter run
因為第一次運行項目,有時flutter.framework尚未生成,導致項目報錯或者路徑未找到,并不是必現,尚未找到具體原因,如果有人找到原因,請留言告知。
原生代碼修改:
AppDelegate.h修改:
AppDelegate.m修改:
flutter入口:
原生與flutter交互:
flutter熱更新:
終端打開flutter模塊路徑下運行flutter attach然后使用xcode運行項目