背景 :之前的项目是直接建立的flutter工程,除了推送之外全是flutter的代码,当随着项目的发展,我发现项目需要接入RN的一个SDK的时候,当场懵逼。于是乎,决定用iOS原生的平台,把flutter作为SDK引入。
官网给的方案需要修改xcode的配置,还要引入脚本,会污染主工程的环境,因此采用引入编译产物的做法。
因为编译产物会根据flutter的版本、证书、模拟器等发生变化,因为flutter的原生代码也建一个仓库进行管理。
步骤
一、配置flutter环境
按照官网上配置,就不多比比了。
二、获取编译产物
1、 flutter create -t module flutter_library 创建flutter项目
2、在 flutter 项目目录下,执行 flutter build ios 针对 Flutter 项目进行编译打包,生成 Flutter 编译产物。
3、建立git私有库,用于存放flutter的编译产物。
4、把lutter_library工程下隐藏文件.ios打开。找到/.ios/Flutter/FlutterPluginRegistrant,把该类放到私有库的Classes中,和replace放到一起。
5、建一个Frameworks文件夹,和Classes同级目录
6、把上述编译的Flutter.framework和App.framework放到私有库的frameworks中
7、修改podspec。这一步很关键,就是在这一步卡了很久。
一下是我最终的podspec 记得把homepage和 s.source 换成自己的git首页地址。
Pod::Spec.new do |s|
s.name = 'FlutterKit'
s.version = '0.1.0'
s.summary = 'This is A iOS Private pod lib Flutter.'
s.description = <<-DESC
This is a iOS Private pod lib FOR PING AN HEALTH CLOUD COMPANY LIMITED.
Create by user_name - user_email
All Rights Reserved.
DESC
s.homepage = 'https://github.com/user_name/FlutterKit'
s.license = {
'type': 'Copyright',
'text': 'Copyright 2011 - 2018 pajk.cn. All rights reserved.\n'
}
s.author = { 'xxx' => 'xxx' }
s.ios.deployment_target = '8.0'
s.source = { :git => 'https://github.com/user_name/FlutterKit', :tag => s.version.to_s }
s.source_files = 'FlutterKit/Classes/**/*.{*}'
s.vendored_frameworks = '**/FlutterKit.framework','FlutterKit/Frameworks/Flutter.framework','FlutterKit/Frameworks/App.framework'
然后就是把内容commit 之后就是git tag 0.1.0 git push --tags