之前有解释过如何将flutter嵌入现有app,但是总感觉比较麻烦,需要添加一些配置文件。如果进行多次的迭代开发修改比较频繁。因为我们的app都是使用cocoapods进行管理,所以我们也打算将flutter进行pod化,也算是方便导入吧。
首先我们摒弃了直接在工厂内添加flutter工程,用cocopods导入flutter,方便我们调试,等到调试没有问题我们把产物(framework包)添加到pod文件里面形成第三方pod,供其他工程直接饮用。
1、创建Xcode工程
pod lib create jefferyFlutterPod
2、创建flutter工程
flutter create -t module jeffery_flutter_module
3、修改jefferyFlutterPod/Example/Podfile文件
use_frameworks!
platform :ios, '9.0'
target 'jefferyFlutterPod_Example' do
pod 'jefferyFlutterPod', :path => '../'
target 'jefferyFlutterPod_Tests' do
inherit! :search_paths
end
end
flutter_application_path = '../jeffery_flutter_module'
eval(File.read(File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding)
4.打开jefferyFlutterPod.xcworkspace工程 进行pod install
5.修改Xcode配置
修改Xocde Build Setting中Enable Bitcode为NO
添加Run Script
"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed
xcode能够正常运行。
5.vscode打开jeffery_flutter_module
pubspec.yaml添加flutter_easyrefresh第三方插件进行测试
flutter packages get 加载第三方包
flutter run 运行
之后在Xcode重新运行能够看到最新的flutter界面
6.上传pod
修改podspec文件
Pod::Spec.new do |s|
s.name = 'jefferyFlutterPod'
s.version = '0.1.1'
s.summary = 'A test for flutter_pod.'
s.description = <<-DESC
TODO: Add long description of the pod here.
DESC
s.homepage = 'https://github.com/mynameissujie/jefferyFlutterPod.git'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'jeffery' => '379675320@qq.com' }
s.source = { :git => 'https://github.com/mynameissujie/jefferyFlutterPod.git', :tag => s.version.to_s }
s.ios.deployment_target = '9.0'
s.source_files = 'jefferyFlutterPod/Classes/**/*'
s.public_header_files = 'jefferyFlutterPod/Classes/**/*.h'
s.vendored_frameworks = "jefferyFlutterPod/Framework/*.framework"
end
7.一系列git操作推送pod
git add .
git commit -m 'first commit'
git remote add origin https://github.com/mynameissujie/jefferyFlutterPod.git
git push -u origin master
git tag 0.1.1
git push --tags
git push origin master
pod spec lint jefferyFlutterPod.podspec
pod trunk register 379675320@qq.com 'jeffery' --description='jeffery macbook pro' --verbose
pod trunk push jefferyFlutterPod.podspec
成功推送之后,iOS工程使用的直接利用cocopods进行集成。
pod 'jefferyFlutterPod','0.1.1'
效果如下:
说明我们已经可以正常使用了。