一、创建flutter module
在开始嵌入flutter之前,首先需要创建flutter工程,但请注意,这里创建的是flutter module工程,有两种方式创建:
1.使用命令行:flutter create -t module xxx
此命令会创建一个包含Android library 和CocoaPods pod的flutter工程,供原生应用使用。需要注意的是,不管是用命令行还是使用AS创建flutter module,都需要保证创建的flutter工程和原生应用在同一目录下。假如你在some/path/MyApp存在一个iOS原生应用,要创建flutter工程:
cd some/path/
flutter create -t module my_flutter
这会创建在这个位置some/path/my_flutter/创建一个flutter module,里面包含基础的dart代码,以及一个.ios/的隐藏文件,其中包含Cocoapods和helper Ruby script。
二、添加原生app对flutter的依赖
现在假设你的目录结构如下:
my_flutter/
lib/main.dart
.ios/
MyApp/
AppDelegate.h
AppDelegate.m (or swift)
我们需要使用iOS中的Cocoapods来添加flutter framework的依赖,因为在my_flutter工程中包含的任何flutter plugin也需要使用这个flutter framework。
如果你的项目中已经在使用CocoaPods,可以直接按照以下的步骤进行配置,
1.添加以下内容到Podfile中:
flutter_application_path='path/to/my_flutter/'load File.join(flutter_application_path,'.ios','Flutter','podhelper.rb')
2.每一个Xcode target都需要绑定flutter,调用install_all_flutter_pods(flutter_application_path)
target 'MyApp' do
install_all_flutter_pods(flutter_application_path)
end
target 'MyAppTests' do
install_all_flutter_pods(flutter_application_path)
end
3.命令行执行 pod install
任何时候,如果你修改了flutter工程中some/path/my_flutter/pubspec.yaml中的三方依赖,在flutter工程所在目录,都需要执行flutter packages get来更新从podhelper.rb脚本中读取的plugins列表,然后在app所在目录执行pod install。
这个podhelper.rb脚本是干嘛使得呢?它可以确保你所有的plugins,Flutter.framework还有App.framework都会被绑定在你的原生项目中。
4.由于flutter工程不支持bitcode,所以需要在xcode中设置Build Settings->Build Options->Enable Bitcode为NO。
好了,做完了上面所有的工作,如无意外,我们原生项目中集成flutter的工作就做完了,接下来就可以愉快的进行混合开发了。