Android工程接入Flutter module

該篇文章介紹在已有Android工程中嵌入flutter module,以達(dá)到混合開(kāi)發(fā),前提是已經(jīng)配置好flutter開(kāi)發(fā)環(huán)境,配置請(qǐng)參考https://flutterchina.club/setup-macos/

創(chuàng)建Flutter module

在當(dāng)前project下 運(yùn)行命令?

flutter create -t module my_flutter(my_flutter為生成的flutter module名稱)

增加配置代碼

(1) 在工程的settings.gradle增加以下配置?

(2)在app (假如你的Android應(yīng)用名稱為app)的build.gradle文件下dependencies增加如下依賴

其中flutter工程為創(chuàng)建Flutter module過(guò)程自動(dòng)生成的,注意就是flutter,b

注意 其中 minSdkVersion 需要至少為16,否則會(huì)報(bào)錯(cuò)

生成的工程結(jié)構(gòu)如下:

工程目錄結(jié)構(gòu)

在Android工程中創(chuàng)建Flutter的UI(調(diào)用Flutter中的dart編寫的widget)

?Flutter提供兩種方法引入,一種是View,一種是Fragment,View如下

其中,第二個(gè)參數(shù)是Lifecycle對(duì)象, 第三個(gè)參數(shù)為route,這個(gè)參數(shù)Flutter端可以通過(guò)window.defaultRouteName獲取,利用它flutter可知道要?jiǎng)?chuàng)建哪個(gè)widget.

同理?Flutter.createFragment(String route)可生成FlutterFragment

順便說(shuō)明下在運(yùn)行后會(huì)發(fā)現(xiàn)有白屏的情況,是因?yàn)樵赿ebug模式下運(yùn)行的原因,無(wú)需理會(huì),最終發(fā)布release模式下會(huì)很快的

Flutter module支持hot reload (熱重載)

進(jìn)入到flutter module目錄下

執(zhí)行命令 flutter attach?即可

如上就說(shuō)明連接成功,只要有改動(dòng),鍵盤敲擊R或者r 即可看到更改

如果你運(yùn)行命令后一直在waiting,可嘗試殺死該應(yīng)用進(jìn)程后再重啟,進(jìn)入相關(guān)Flutter頁(yè)面就可連接上了

簽名打包

引入Flutter module后,對(duì)原生工程構(gòu)建基本沒(méi)影響,按常規(guī)操作即可, 編譯模式可參考之前我寫的文章Flutter編譯模式

官方文檔:https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps

最后編輯于
?著作權(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)容