flutter學(xué)習(xí)3—flutter與iOS混合開發(fā)

前言

你已經(jīng)有了iOS工程,想集成flutter模塊到現(xiàn)有工程實(shí)現(xiàn)混合開發(fā)

一、現(xiàn)有工程集成flutter模塊方式

一共有2種方式:

1、Frameworks方式集成
2、CocoaPods集成(可以熱重載,推薦使用)

二、Frameworks集成方式

假如你的現(xiàn)有iOS工程是"FlutteriOSDemo",flutter工程是“flutterdemo”
在iOS工程目錄下新建一個(gè)文件夾,我這里命名為“Flutter”,如圖:


image.png
cd到flutter工程,執(zhí)行命令如下:
flutter build ios-framework --output=/Users/mybook/Desktop/FlutterNativeDemo/FlutteriOSDemo/Flutter 

/Users/mybook/Desktop/FlutterNativeDemo/FlutteriOSDemo/Flutter 這個(gè)為iOS工程里“Flutter”文件夾路徑

此命令會(huì)將flutter工程打包為framework,存放在“Flutter”文件夾中,生成三種環(huán)境的framework,如圖:
image.png

每個(gè)文件夾下有兩個(gè)framework,如圖:


image.png
打開iOS工程,選擇一種環(huán)境的framework拖到工程的Link Binary With Libraries下:

注意:Embed選擇Embed & Sign


image.png
至此,flutter就集成到了iOS工程中了,你可以到AppDelegate.h引入flutter庫(kù),就可以開發(fā)了

image.png

注意??:\color{red}{如果修改了flutter代碼,需要重新生成framework導(dǎo)入iOS工程}

三、CocoaPods集成

你需要準(zhǔn)備好iOS工程和flutter module工程,并且它們?cè)谕晃募A下。
小編這里現(xiàn)有iOS工程是"IOSAppDemo",flutter module工程是“fluttermodule”。
注意??:\color{red}{flutter工程是一個(gè)module,不是application}

如何創(chuàng)建flutter module

1、命令行方式
cd你想要存放flutter module的文件夾下(與iOS工程是同一個(gè)目錄)

$ flutter create --template module fluttermodule

2、vs code創(chuàng)建方式
第一步:
用vs code打開命令面板(快捷鍵shift + command + P),輸入Flutter: New Peoject


image.png

第二步:
選擇Module,然后輸入名稱即可


image.png
在iOS工程Podfile里添加配置

如果你的iOS工程還沒有創(chuàng)建Podflile,cd到你的iOS工程,執(zhí)行以下命令:

$ vim Podfile

然后添加如下代碼:

flutter_application_path = '../fluttermodule'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')

target "IOSAppDemo" do

use_frameworks!
install_all_flutter_pods(flutter_application_path)

end

post_install do |installer|
  flutter_post_install(installer) if defined?(flutter_post_install)
end

最后pod install

實(shí)現(xiàn)熱重載:

第一步:

將iOS工程運(yùn)行起來

第二步:

vs code控制面板輸入:Debug:Attach to Flutter on Device


image.png

至此,flutter工程就與你現(xiàn)有iOS工程關(guān)聯(lián)起來,修改flutter代碼并保存,即可實(shí)現(xiàn)熱重載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容