打包问题

2021-05-19  本文已影响0人  child_cool

打包 pod 中的 framework

1、选中pod中的 CMSPaaS 库 中的Build settings 。
2、修改Build settings页中的Build Active Architecture only 值为NO

image

3、修改Build settings页中的Link With Standard Libraries 值改为NO

image

4、修改Build settings页中的Mach-O Type 为Static Library

image

5、修改Build settings页中的Dead Code Stripping 为NO

image

6、设置Build Setting --> Excluded Architectures --> Release --> 添加上 arm64 (合并模拟器和真机时使用)

image

7、设置编译是生成 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 内部的文件

copy 模拟器的 XXXXX.swiftmodule 和 真机 XXXXX.swiftmodule 内部的文件
到合并的 XXXXX.framework 的 Modules 中的 XXXXX.swiftmodule

image

解决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 中的依赖库

image

2、Build Setting 中 ,添加手动的 framework

image

3、Build Setting 中 ,找到Other Linker Flags,添加-ObjC

image

4.选择target(就是左边你的工程target)—— BuildSettings —— search Paths 下的 User Header Search Paths(如图所示)
填写 “$(SRCROOT)/framework文件路径/XXXXX.framework/Headers”

image

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
上一篇下一篇

猜你喜欢

热点阅读