Flutter與iOS混編(一)

前言

Flutter和iOS支持兩種形式的混編,一種是某一些頁面全是用flutter去繪制图筹,另外一只是flutter頁面作為iOS某個控制器頁面的一部分去展示净薛,后面會逐步去介紹這兩種方式的實現

本篇文章主要介紹在iOS項目中添加Futter模塊
1、如果你還沒開始在macOS上搭建Flutter開發(fā)環(huán)境可以參考官方文檔:入門: 在macOS上搭建Flutter開發(fā)環(huán)境楞泼。
2炮捧、在flutter和iOS混編過程中我們需要用到Android Studio或者Visual Studio Code 來編寫dart相關的代碼及第三方庫的管理庶诡,具體的配置步驟可以參考官方文檔: 配置編輯器
3寓盗、如果你對flutter和iOS的區(qū)別還不是很了解可以先了解下官方文檔 Flutter for iOS 開發(fā)者灌砖。

一、創(chuàng)建Xcode項目

用Xcode創(chuàng)建一個iOS項目命名為Flutter_iOS

iOS項目.png

然后cd到項目的根目錄Flutter_iOS
執(zhí)行命令 flutter create -t module my_flutter

創(chuàng)建flutter模塊.png
二傀蚌、將 Flutter 模塊以 pods 的方式加入到已有項目中

在我們的已有項目 Flutter_iOS 中初始化 pods 基显,如果你的項目中已初始化過 pods ,請忽略善炫。
cd 項目根目錄

pod init

這時我們項目中會多一個 Podfile 文件撩幽,我們在該文件最后面添加命令如下:

vim podfile
target 'Flutter_iOS' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for Flutter_iOS

end

# 新加命令
flutter_application_path = '../flutter_module'
eval(File.read(File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding)

注意:flutter_application_path 是 Flutter 模塊的路徑,記得修改為你的模塊名稱箩艺。
添加后保存退出窜醉,運行命令

pod install
三、配置 Dart 編譯腳本

Xcode->Build Phases ->點擊左上角?號按鈕->選擇 New Run Script Phase 艺谆,添加如下腳本:

"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed 
四榨惰、設置BitCode

Flutter 目前還不支持 BitCode,點擊將我們項目 BitCode 選項設置為 NO
Xcode->Build Settings ->Build Options->將BitCode 選項設置為 NO

五、添加跳轉代碼

使用 FlutterViewController
所有的 Flutter 頁面公用一個Flutter實例 (FlutterViewController) 静汤。

#import "ViewController.h"
#import <Flutter/Flutter.h>
#import <FlutterPluginRegistrant/GeneratedPluginRegistrant.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}


- (IBAction)pushToFlutterVC:(UIButton *)sender
{
    FlutterViewController *flutterVC = [[FlutterViewController alloc] init];
    [self presentViewController:flutterVC animated:YES completion:nil];
}

@end

六琅催、運行和熱更新

項目可以在Android Studio上進行dart相關語言的編寫,但是需要使用Xcode運行整個項目的代碼
混編后原先的熱更新不能用虫给,但是我們可以通過如下方式實現:
首先退出模擬器上運行的項目
cd到flutter_module工程路徑藤抡,執(zhí)行

flutter attach

attach成功之后,運行xcode抹估,更新直接press 'r'
在Android Studio中修改dart文件缠黍,press 'r'直接可以看到修改之后的顯示

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市药蜻,隨后出現的幾起案子瓷式,更是在濱河造成了極大的恐慌替饿,老刑警劉巖砸西,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件码倦,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機瓤漏,發(fā)現死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颊埃,“玉大人蔬充,你說我怎么就攤上這事“嗬” “怎么了饥漫?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長罗标。 經常有香客問我庸队,道長,這世上最難降的妖魔是什么闯割? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任彻消,我火速辦了婚禮,結果婚禮上宙拉,老公的妹妹穿的比我還像新娘宾尚。我一直安慰自己,他們只是感情好谢澈,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布煌贴。 她就那樣靜靜地躺著,像睡著了一般锥忿。 火紅的嫁衣襯著肌膚如雪牛郑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天敬鬓,我揣著相機與錄音淹朋,去河邊找鬼。 笑死列林,一個胖子當著我的面吹牛瑞你,可吹牛的內容都是我干的。 我是一名探鬼主播希痴,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼者甲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了砌创?” 一聲冷哼從身側響起虏缸,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤鲫懒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后刽辙,有當地人在樹林里發(fā)現了一具尸體窥岩,經...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年宰缤,在試婚紗的時候發(fā)現自己被綠了颂翼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡慨灭,死狀恐怖朦乏,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情氧骤,我是刑警寧澤呻疹,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站筹陵,受9級特大地震影響刽锤,放射性物質發(fā)生泄漏。R本人自食惡果不足惜朦佩,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一并思、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吕粗,春花似錦纺荧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至议泵,卻和暖如春占贫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背先口。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工型奥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碉京。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓厢汹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谐宙。 傳聞我的和親對象是個殘疾皇子烫葬,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353