最近在搞公司的数据通信加密,各个终端与服务器端的通信出了HTTPS通道级别的加密还需要程序级别的报文加密。为了方便,采用静态library的形式发布,最终的libsafencrypt.a文件既可以被macOS引用,也可以被iOS引用,且在iOS上尽可能的兼容模拟器、真机等等。首先确保library没有依赖CocoaTouch,因为一旦依赖macOS将无法引用。然后在资源库的设置里面按照下图进行配置:
- 选择
Build Active Architecture Only
为Yes
-
Supported Platforms
添加上macos
iphonesimulator
iphoneos
三项 -
Valid Architectures
添加上armv7
armv7s
arm64
i386
x86_64
五项
![](https://img.haomeiwen.com/i1786937/95053681c4f8ca0e.png)
这样编译出来的.a库就可以被多个平台使用了。
注意:如果你的library引用了其他的.framework文件,在编译时是不会将引用的.framework打入你的.a中的,也就是说你在你的实际项目中需要引用你的.a后同样也要引入你的library使用的.framework。
但是如果你的library引用了其他的.a,那么是没有这种问题的,依赖的.a会直接打包进你的.a中。
补充:如果你的library中存在category,那么在引用library的项目中可能会出现这种错误
XXXXXX unrecognized selector sent to class XXXXXX
,这个时候只需要将引用library的项目的Other Link Flag
设置成-all_load
即可。
网友评论