該篇文章介紹在已有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)如下:

在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