如果只是简单的静态库打包,我也不多说什么,现在网上大把。作为程序员我们先说说需求。封装一个第三方framework。不在外部暴露关于该framework的任何消息。
配置
xcode 10.1
第一步 创建静态库工程
创建静态库按照正常导入封装代吗就可以了,当然不是啦,
接下来就是重点了,恶心了很久的东西。
导入我们需要第三方framework。你以为按照网上说的直接导进去,只要不点击add to targets ,只导入到项目中去就可以了。我不清楚是从Xcode几开始这种方法不可以了啊。反正我的Xcode10不可以。然后就查阅前篇文章,尝试了各种奇门异法,终于让我找到一篇文章,如何将framework变成.a文件。那么就可以打包进我们的SDK里面去了。
引用这篇文章的话:
通过framework的介绍:Framework的英文释意是框架,主要由Headers、binary文件、.bundle这三部分构成,其实framework就是在.a静态库基础上的更上一层封装,包含了资源,二进制文件,和头文件并生成统一格式方便用户调用有点类似<.dylib和.tbd>,并不是重新生成的另外一种形式,只是对老的格式进行了一层更规范的封装,统一管理资源文件 头文件和库的二进制文件。所以如果你需要的.a文件其实就在.framework文件中。
在你的framework的文件中找到跟framework库同名的无后缀文件。将这个文件加上.a后缀即可。如图
拿UM做列子
这样我们就重新获取到一个我们需要的.a库了。
还有个小问题,如果个别第三方里面还有携带其他信息文件,也要一并放入到我们创建的文件夹里。
第二部配置
我们导入的第三方一般都是需要引入各种系统库,和tbd文件的。这个我们一定要做的,不然编译会出错。
然后我们的配置项目。
1· 调整最低支持iOS系统
2· 将Build Active Architecture Only 设置为NO
3 ·如果 SDK 有用到 Category,注意项目设置 Other Linker Flags 添加 -ObjC
4· RGETS (yooweiSDK) - Build Settings-Architectures 增加armv7s。 如果你用的真机是iPhone5 C,生成的Framework不支持armv7s,默认的Architectures不包含armv7s。 所以要在Architectures下增加armv7s,并选中。(个人测过xcode10打包出来的不需要加入这个了。)
第三步 合成虚拟机库和真机库
说实话这个没什么好说的,就是一句命令行
lipo -create 虚拟机库.a 真机库.a -output .../Desktop/??.a(生成路径)
搞定了。
网友评论