iOS老項目集成Flutter_Boost

Flutter boost:?https://github.com/alibaba/flutter_boost

官方方案:https://flutter.dev/docs/development/add-to-app/

背景簡介

新一代Flutter-Native混合解決方案。 FlutterBoost是一個Flutter插件,它可以輕松地為現(xiàn)有原生應用程序提供Flutter混合集成方案。FlutterBoost的理念是將Flutter像Webview那樣來使用。在現(xiàn)有應用程序中同時管理Native頁面和Flutter頁面并非易事。 FlutterBoost幫你處理頁面的映射和跳轉(zhuǎn),你只需關(guān)心頁面的名字和參數(shù)即可(通??梢允荱RL)。

一:配置flutter sdk版本

官方提示:在繼續(xù)之前,您需要將Flutter集成到你現(xiàn)有的項目中。flutter sdk 的版本需要 v1.9.1-hotfixes,否則會編譯失敗.

先去Flutter github查看v1.9.1-hotfixes版本提交記錄,這里選擇下圖的提交記錄

flutter v1.9.1

打開終端cd進入到存放flutter sdk目錄,執(zhí)行回退

git reset --hard 68587a0916366e9512a78df22c44163d041dd5f3

然后執(zhí)行flutter doctor ,等待重新更新下載

備注:這里有個問題,F(xiàn)lutter升級到1.9.x后 ios打包失敗 Flutter.framework: Permission denied? 這是flutter官方的一個bug,flutter升級到1.10就好了。不升級flutter的情況下,可以改Flutter SDK 的一個文件,flutter/packages/flutter_tools/bin/xcode_backend.sh,打開該文件,第144行RunCommand find"${derived_dir}/engine/Flutter.framework"-type f -exec chmod a-w"{}"\;替換為

RunCommand find"${derived_dir}/engine/Flutter.framework"-type f -iname'.h'-exec chmod a-w"{}"\;

二:創(chuàng)建Flutter module

請確保iOS和Flutter項目的根目錄必須在同一目錄下


文件結(jié)構(gòu)示例

cd到當前原生項目所在目錄,執(zhí)行:

flutter create -t module flutter_module

如果iOS使用swift語言,請加上 -i swift:

flutter create?-i swift -t module flutter_module

等待Flutter module創(chuàng)建完成,用編輯器打開該項目,修改pubspec.yaml文件,添加flutter_boost依賴,此處選擇0.1.63為較穩(wěn)定版本。

pubspec.yaml文件示例

打開Flutter項目 , 獲取包:

flutter packages get

至此Flutter項目混編基礎配置完成。

三:原生接入Flutter_Boost

打開iOS項目Podfile文件,加入以下代碼,用于引入Flutter_Boost相關(guān)模塊。

? flutter_application_path ='../flutter_module'

? load File.join(flutter_application_path,'.ios','Flutter','podhelper.rb')

? install_all_flutter_pods(flutter_application_path)

Podfile示例

執(zhí)行pod install,完成后會引入Development Pods模塊:

pods結(jié)構(gòu)示例

接下來在Build Setting中把Enable Bitcode改為NO。

在Build Phases里添加運行腳本,好讓iOS原生運行時自動打包flutter項目

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

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

備注:加上這兩句腳本后,項目運行有可能會報錯,解決方案:

在Flutter module項目中執(zhí)行flutter clean,執(zhí)行完之后再執(zhí)行?flutter build ios --release,生成iOS項目產(chǎn)物,再去iOS項目中嘗試編譯,即可成功。

下一篇將詳細介紹原生與Flutter頁面相互跳轉(zhuǎn)的代碼配置,如果有問題歡迎留言交流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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