一: 官方建議使用pod方法
引入,因此我也采用pod方法
引用
二:原生項(xiàng)目接入flutter
工程。
不建議使用Android Studio
或者VSCode
創(chuàng)建伟葫,因?yàn)閲L試創(chuàng)建后發(fā)現(xiàn).iOS/Flutter
目錄缺少podhelper.rb
腳本命令聂薪,會(huì)導(dǎo)致配置完pod
引入后報(bào)錯(cuò),建議使用命令行創(chuàng)建泻帮。
三: 建議使用命令行創(chuàng)建
創(chuàng)建的flutter工程
目錄最好和iOS原生項(xiàng)目
目錄一個(gè)級(jí)別文件目錄下:
//其中`my_flutter`為定義的`flutter工程名` 這里我定義為`flutter_project `
flutter create -t module flutter_project
四: 使用命令行創(chuàng)建完后 在指定目錄下生成的flutter
工程目錄如下
五: 經(jīng)過(guò)調(diào)研對(duì)比 Android Studio
和VSCode
都可以開(kāi)發(fā)flutter
項(xiàng)目,但是個(gè)人建議使用Android Studio
计寇,真機(jī)調(diào)試或者log控制臺(tái)以及智能提示Android Studio
都有較大優(yōu)勢(shì),極其好用锣杂,我這里用的VSCode
注意:這個(gè)時(shí)候可以去看看 VSCode
創(chuàng)建flutter項(xiàng)目
哪篇文章,主要看如何先讓VSCode
安裝好插件番宁,如何VSCode
跑起來(lái)看看效果元莫。最后可以在VSCode
的下面的終端里面執(zhí)行:flutter pub get
命令,安裝插件蝶押,此命令也可以不執(zhí)行踱蠢。
六: flutter
項(xiàng)目創(chuàng)建完畢后。
1播聪,打開(kāi)新建的flutter
項(xiàng)目朽基,運(yùn)行項(xiàng)目:
flutter run
確認(rèn)無(wú)報(bào)錯(cuò)。
2离陶,那接下來(lái)SSB-iOS
原生項(xiàng)目配置通過(guò)pod
接入flutter
項(xiàng)目稼虎,SSB-iOS
項(xiàng)目的podfile
配置如下:
pod
目錄上面配置路徑下面配置對(duì)路徑的引用,如圖所示:
SSB-iOS
項(xiàng)目的podfile
配置具體代碼如下:
platform :ios, '12.0'
# flutter_application_path 是flutter 工程的項(xiàng)目路徑
flutter_application_path = '../flutter_project'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
post_install do |installer|
flutter_post_install(installer) if defined?(flutter_post_install)
end
# 以及
target 'SSBApp' do
use_frameworks!
# 這邊引入
install_all_flutter_pods(flutter_application_path)
end
七: 原生項(xiàng)目招刨,執(zhí)行即可
1霎俩,原生項(xiàng)目,pod
執(zhí)行
// cd 到iOS原生項(xiàng)目目錄下執(zhí)行:
pod install
// 或者
pod update --verbose --no-repo-update
2,原生項(xiàng)目,引入flutter
配置
AppDelegate.h
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#pragma mark -- flutter配置3
@import Flutter;
#import <FlutterPluginRegistrant/GeneratedPluginRegistrant.h>
@interface AppDelegate : FlutterAppDelegate //UIResponder <UIApplicationDelegate>
@property (nonatomic, strong) FlutterEngine *flutterEngine;
@property (readonly, strong) NSPersistentContainer *persistentContainer;
- (void)saveContext;
@end
AppDelegate.m
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#pragma mark -- flutter配置4
self.flutterEngine = [[FlutterEngine alloc] initWithName:@"my flutter engine"];
[self.flutterEngine run];
[GeneratedPluginRegistrant registerWithRegistry:self.flutterEngine];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
八: 執(zhí)行完畢后 pod
目錄下會(huì)引入flutter1.0
和FlutterPluginRegistrant
如圖:
然后可以在VSCode
下面的終端里面執(zhí)行
flutter run
如果真機(jī)運(yùn)行報(bào)錯(cuò):
那么需要把
flutter
里面的iOS工程Runner項(xiàng)目
的bundle Identifier
改下,改成符合你的開(kāi)發(fā)者開(kāi)發(fā)者賬號(hào)格式改成示例
注意:
1打却,flutter
工程每次修改后杉适,都需要進(jìn)行
flutter run
2,flutter
工程每次修改后柳击,原生主工程每次運(yùn)行猿推,都需要執(zhí)行一下:
pod install
運(yùn)行原生主工程,報(bào)錯(cuò)
報(bào)錯(cuò)1:Module 'Flutter' not found
解決:
Flutter工程
flutter clean
flutter pub get
SSB-iOS
原生項(xiàng)目工程
pod install
報(bào)錯(cuò)2:
Sandbox: rsync.samba(82572) deny(1) file-write-create /Users/yinxia/Library/Developer/
Xcode/DerivedData/iOSProject-dinnfnutvwrmoefkwmfpwlrafovp/Build/Products/Debug-iphonesimulator/Flutter.framework
//以及
[ +5 ms] Flutter failed to write to a file at "/Users/yinxia/Library/Developer/Xcode/DerivedData/
iOSProject-dinnfnutvwrmoefkwmfpwlrafovp/Build/Products/Debug-iphonesimulator/.last_build_id".
解決:在項(xiàng)目的構(gòu)建設(shè)置 > 構(gòu)建選項(xiàng)(BuildSettings
)> 沙盒(User Script Sandboxing
)' 改成NO
九: 那么iOS和flutter如何混編呢捌肴?iOS跳轉(zhuǎn)flutter頁(yè)面并傳參蹬叭,flutter跳轉(zhuǎn)iOS頁(yè)面并傳參,如何做状知?
有多種種方式秽五,其中一種就是flutter_boost
,我們用這種就行,看下一篇文章饥悴√勾【五:Flutter與原生通信的方式簡(jiǎn)介】