打包问题
打包 pod 中的 framework
1、选中pod中的 CMSPaaS 库 中的Build settings 。
2、修改Build settings页中的Build Active Architecture only 值为NO
3、修改Build settings页中的Link With Standard Libraries 值改为NO
image4、修改Build settings页中的Mach-O Type 为Static Library
image5、修改Build settings页中的Dead Code Stripping 为NO
image6、设置Build Setting --> Excluded Architectures --> Release --> 添加上 arm64 (合并模拟器和真机时使用)
image7、设置编译是生成 release framework
image注意:如果是OC和swift 混编的, swift 资源不需要设置 public,只需要 XXXX-Swift.h 是 public 属性即可。OC的 需要暴露的.h 设置public ,不需要暴露的,不用设置public
image
8、 com+b 编译生成framework ( 选模拟器 生成模拟framework, 选真机生成真机framework)
9、合并 模拟器包 和 真机包
1、合并 XXXXX.framework/XXXXX 执行文件
lipo -create 模拟器包路径/XXXXX.framework/XXXXX 真机包路径/XXXXX.framework/XXXXX -output 合并包路径/XXXXX.framework/XXXXX
lipo -create /Users/***/Desktop/framework/moni/XXXXX.framework/XXXXX /Users/***/Desktop/framework/zhenji/XXXXX.framework/XXXXX -output /Users/***/Desktop/framework/hebing/XXXXX.framework/XXXXX
2、合并 模拟器的 XXXXX.swiftmodule 和 真机 XXXXX.swiftmodule 内部的文件
imagecopy 模拟器的 XXXXX.swiftmodule 和 真机 XXXXX.swiftmodule 内部的文件
到合并的 XXXXX.framework 的 Modules 中的 XXXXX.swiftmodule
解决swift生成framework静态库让oc调用模拟器和真机都能通过的合并方法使用
如果需要 XXXXX-swift.h 文件,在真机和模拟器下都可以使用时,可以采用以下方法,来解决swift生成framework静态库让oc程序调用模拟器和真机都能通过的合并方法
就是在合并包的 headers 文件夹中,找到 XXXXX-swift.h 文件,然后打开文件,修改前两行代码
// 模拟器
#if 0
#elif defined(__x86_64__) && __x86_64__
// .... 以下代码省略
// 真机
#if 0
#elif defined(__arm64__) && __arm64__
// .... 以下代码省略
修改这两行代码为
#if defined(__x86_64__) && __x86_64__ || (__arm64__) && __arm64__
即,可以解决。
使用
1、pod framework 中的依赖库
2、Build Setting 中 ,添加手动的 framework
image3、Build Setting 中 ,找到Other Linker Flags,添加-ObjC
image4.选择target(就是左边你的工程target)—— BuildSettings —— search Paths 下的 User Header Search Paths(如图所示)
填写 “$(SRCROOT)/framework文件路径/XXXXX.framework/Headers”
5、使用样例
image如果想要上传pod 库使用,请参考创建自己的 framework ,并上传 pod
遇到问题
1、合并真机和模拟framework 包时,报错
have the same architectures (arm64) and can't be in the same fat output file
设置Build Setting --> Excluded Architectures --> Release --> 添加上 arm64 (合并模拟器和真机时使用)
image