美文网首页
封装.framework库

封装.framework库

作者: ImmortalSummer | 来源:发表于2020-05-21 11:31 被阅读0次

封装.a静态库

补充一个新问题: xcode升级到12.2版本以后, 在合并模拟器和真机的静态库时报错:have the same architectures (arm64) and can't be in the same fat output file

详细报错如下:

fatal error: /Applications/Xcode.app/Contents/.../usr/bin/lipo: Release-iphoneos/xxxFramework.framework/xxxFramework and Release-iphonesimulator/xxxFramework.framework/xxxFramework have the same architectures (arm64) and can't be in the same fat output file

原因:

查看真机静态库包含的架构: arm64 armv7
查看模拟器静态库包含的架构: arm64 x86_64 i386
两个库中都有arm64架构, 冲突了, 无法合并.(以前的xcode版本打包的模拟器静态库是没有arm64框架的)

解决方法:

使用 lipo xxx -remove arm64 -output xxx 命令将其中一个静态库的arm64的架构删除, 然后再用新生成的库去合并即可

1. 新建一个framework工程

新建framework.png

2. 暴露头文件

工程新建后会自动生成 一个 工程名.h 的头文件, 并主动暴露这个头文件. 我们新增的文件, 需要手动添加暴露出来, 打包后才会暴露到header文件夹中:

暴露头文件.png

3. 四次编译

编写好静态库的代码后,需要分别编译四次:真机-debug、真机-release、虚拟机-debug、虚拟机-release。
例如: 真机-debug编译, 需要调整为debug下, 选择真机, 然后run运行, 执行完成后会在 Products文件夹中生成一个.framework文件.

4. 查看 framework支持的架构

lipo -info /Users/~省略路径~/Products/Debug-iphonesimulator/testFramework.framework/testFramework

注意: 查看framework支持的架构, 命令lipo -info 后边跟的是xxx.framework/xxx

查看架构.png

5. 合并架构

将真机和模拟器两个framework合并(注意: 只能debug真机和模拟器合并, release真机和模拟器合并)
合并的命令是 lipo -create 真机/xxx.framework/xxx 模拟器/xxx.framework/xxx -output new路径/xxx
实际上是将真机和模拟器的 .framework 下的同名文件(比如testSDK.framework下会有一个testSDK文件)合并, 然后再将这个合并出来的testSDK文件, 替换模拟器或者真机(哪个都行)的.framework中去即可, 替换完成的.framework就是可以同时在真机和模拟器下使用的framework了

lipo -create /Users/~省略路径~/Products/Debug-iphoneos/testFramework.framework/testFramework /Users/~省略路径~/Products/Debug-iphonesimulator/testFramework.framework/testFramework -output /Users/~省略路径~/Products/Debug/testFramework.framework/testFramework

合并.png

相关文章

网友评论

      本文标题:封装.framework库

      本文链接:https://www.haomeiwen.com/subject/aiqzohtx.html