cocoaPods集成本地flutter项目及远程flutter项目
1、新建iOS原生项目,如果已经有flutter项目可忽略;
NativeProject,如下图:
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145009282-1264593621.png)
2、创建flutter 模块项目,如果已经有flutter项目可忽略;
3、清理flutter项目
命令:flutter clean
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145023183-130687183.png)
4、导出flutter framework包到组件库 (库名、文件夹夹名称自定义)
FlutterFrameWork是创建的文件夹,放置framework,可以重命名
命令:flutter build ios-framework --no-debug --no-profile --output=../XPXFlutterKit/XPXFlutterKit/FlutterFrameWork
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145244781-939921886.png)
上述命令导出的是xcframework,并且包含x86_64架构,如果单个删除比较麻烦,打包时删除没有找到相关命令,这里使用arm64_armv7里面framework
命令:
mv ../XPXFlutterKit/XPXFlutterKit/FlutterFrameWork/Release/*.xcframework/ios-arm64_armv7/*.framework ../XPXFlutterKit/XPXFlutterKit/FlutterFrameWork
移动之后要删除xcframework
rm -rf ../XPXFlutterKit/XPXFlutterKit/FlutterFrameWork/Release
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145305679-1036947773.png)
5、 优化Flutter.framework包体积,剥离bitcode相关的代码和资源
路径根据实际情况修改
命令: xcrun bitcode_strip -r ../XPXFlutterKit/XPXFlutterKit/FlutterFrameWork/Flutter.framework/Flutter -o ../XPXFlutterKit/XPXFlutterKit/FlutterFrameWork/Flutter.framework/Flutter
6、打开XPXFlutterKit组件库项目,在XPXFlutterKit.podspec配置相关信息,如下图
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145350093-480941122.png)
cd 到Example文件夹下执行pod install, 执行完成之后,如下图可以看到相关framework
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145404364-844054512.png)
由于flutter.framework剥离了bitcode,所以在运行Example项目时需要Enable Bitcode为NO
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145414159-525867071.png)
flutter相关framework只保留了arm64、armv7架构,不支持模拟器架构,所以需要真机运行
7、本地验证此组件库pod能否通过验证: pod lib lint --use-libraries --allow-warnings
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145422544-1936406910.png)
可能出现的问题,flutter相关farmework仅保留了arm64 armv7架构,如果设置s.pod_target_xcconfig = { 'VALID_ARCHS' => 'armv7 arm64' }会出现一下问题,需要加上x86_64
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' }
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145433996-1624808153.png)
8、提交到远程组件库XPXFlutterKit及远程验证
使用Sourcetree或者终端提交都可以;
pod spec lint --use-libraries --allow-warnings
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145448044-1327955232.png)
可能会出现的问题:
下图中的问题是podSpec中的版本和远程tag不对应,可使用git命令提交时加上tag或远程代码管理工具手动创建tag
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145504689-503424912.png)
9、将组件项目的.podspec 文件提交到本地的私有索引仓库,然后再push到远程私有索引仓库 pod repo push XPXFlutterSpecs XPXFlutterKit.podspec --use-libraries --allow-warnings
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145531242-912995058.png)
10、使用终端查看组件库
pod search XPXFlutterKit
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145543364-835588436.png)
11、原生项目使用flutter组件库
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145555815-183070485.png)
要设置Bitcode
![](https://img2022.cnblogs.com/blog/831566/202208/831566-20220820145617389-1052219035.png)