在iOS项目中依赖Flutter Module-②远程依赖Git资源
目前我找到4种远程依赖方案,这篇介绍第1种方案,如果想提前看其它方案,请进传送门🚪。
- 远程依赖Git上的.xcframework和.podspec
- 本地.podspec中转依赖远程Git上的.xcframework
- 本地.podspec中转依赖远程文件服务器上的.xcframework.zip压缩文件
- 本地.podspec中转依赖远程文件服务器上的Flutter.xcframework.zip + Git上的其它.xcframework
远程依赖Git上的.xcframework和.podspec
准备阶段
跟上篇一样,先创建一个Flutter Module;
cd some/path/
flutter create --template module flutter_module
flutter_module
目录的结构如下,.../flutter_module/lib/
里面放到的就是我们写的dart文件。
some/path/
├── flutter_module
│ ├── README.md
│ ├── build
│ ├── flutter_module.iml
│ ├── flutter_module_android.iml
│ ├── lib
│ ├── pubspec.lock
│ ├── pubspec.yaml
│ └── test
建好flutter_module
后,随便加点flutter代码和第三方组件(比如flutter_boost)。
要把编译产物放到远程Git,咱还得建一个Git仓库,比如叫FlutterModuleSDK.git
,建好git之后克隆到本机,这个本地目录就用来接收编译产物。
开工
先编译flutter_module
,指定导出路径为本地FlutterModuleSDK.git
根目录,这里用的是相对路径../../FlutterModuleSDK/
。
cd flutter_module/
flutter build ios-framework --xcframework --no-universal --output=../../FlutterModuleSDK/
编译完成后会在FlutterModuleSDK
目录增加下面这些文件,为了减少文件大小,只需要用Release
下面的4个.xcframework
即可,把这4个.xcframework
移动到FlutterModuleSDK
根目录,然后删除Debug/Profile/Release
3个文件夹,不需要用了。
Flutter.xcfromework
可以通过上面的编译指令直接得到,还可以通过下面的指令编译后下载zip文件得到,中间多了一个--cocoapods
选项,我个人测试的时候就是这个编译指令,然后下载zip解压得到Flutter.xcfromework
。
flutter build ios-framework --cocoapods --xcframework --no-universal --output=../../FlutterModuleSDK/
到这一步,FlutterModuleSDK
根目录下面除了.git
就只有几个*.xcfromework
文件。
Flutter.xcfromework
App.xcframework
FlutterPluginRegistrant.xcframework
其它第三方库 比如 flutter_boost.xcframework
为了通过CocoaPods远程依赖,还需要创建.podspec
文件。在FlutterModuleSDK
根目录下创建FlutterModuleSDK.podspec
,描述文件的大致主要内容如下,具体的配置项跟发布CocoaPods组件库是一样的,核心区别就是s.vendored_frameworks = '*.xcframework'
,这个库里面只有.xcframework
文件,没有其它的代码文件。
Pod::Spec.new do |s|
s.name = 'FlutterModuleSDK'
s.version = '1.0.2'
s.summary = 'Flutter Module SDK'
s.source = { :git => 'https://a.gitlab.cn/flutter/FlutterModuleSDK.git', :tag => "#{s.version}" }
s.platform = :ios, '8.0'
s.requires_arc = true
s.vendored_frameworks = '*.xcframework'
end
然后提交git,并打上对应的版本标签,push到远程仓库FlutterModuleSDK.git
经过漫长等待... # Flutter.xcfromework文件非常大,上传到Git会很慢
如果push成功,就完成了将产物推到云端的步骤,后面的操作就轮到iOS端来执行。
在Podfile
中添加依赖
pod 'FlutterModuleSDK', :git => 'https://a.gitlab.cn/flutter/FlutterModuleSDK.git', :tag => '1.0.1'
拉取组件库,pod install or update
,即可运行项目。
小结
除了准备阶段,这个方案主要步骤可以分3步,麻烦一点就是提取产物,然后上传、下载都会很慢。
[1.编译]:编译FlutterModule [2.发布] 收集产物推到云端Git [3.更新代码] iOS端更新CocoaPods
优点:所有Flutter编译出来的framework都放到了git,方便统一进行版本管理,Flutter开发可以和iOS开发相互独立,也不用所有iOS开发人员都安装Flutter开发环境,也避免了iOS侧因Flutter版本不一致出现问题。
缺点:Flutter.xcframework
文件太大,没有压缩,上传到git / 从git克隆下载下来很费时。如果Git有单个文件大小限制,那还Push不了。
后面的文章会介绍本地podspec中转依赖远程资源的方案,来避免`.xcframework`文件太大影响上传下载的问题。
转载自:https://juejin.cn/post/6995467268180148255