详细记录:iOS制作framework(包含第三方.a或framework的二次封装)

记录一次将声网的framework集成到自己的framework里的过程。

1.找到二进制文件


详细记录:iOS制作framework(包含第三方.a或framework的二次封装)_第1张图片
image.png

2.将AgoraRtcEngineKit的二进制文件改成.a的后缀名,并且拖到Header里,给Header改名为agoLib


详细记录:iOS制作framework(包含第三方.a或framework的二次封装)_第2张图片
屏幕快照 2018-04-20 上午9.52.51.png

3 .开始制作自己的framework项目,将agoLib文件夹拖进framework项目里,注意勾选Copy...和Add to target选项。


详细记录:iOS制作framework(包含第三方.a或framework的二次封装)_第3张图片
屏幕快照 2018-04-20 上午9.55.45.png

4.将AFNetworking拖到项目里,注意:勾选Copy、不勾选“Add to target”选项(不勾选“Add to target”选项!不勾选“Add to target”选项!)。因为要添加我们的framework的工程基本都会添加AFNetworking,所以这里不勾选“Add to target”,具体工程单独添加AFNetworking即可。

5.将bitcode置为NO

6.(1)选择工程->targe->build setting,在搜索框中搜索linking,进行如下设置
(2)将Build Active Architecture Only 设为 NO


2.png

7.(1)把要公开的头文件已到Public中去,在使用.framework时只能调用公开.h文件中的声明。
(2)
完成上述步骤之后,在ADRTCKit.h文件中,把所有需要暴露的.h文件都用#import < ADRTCKit/PublicHeader.h>引入,记住一定要将所有的需要暴露的.h文件都写在给定位置,不然编译后生成的.framework在引用的时候会有警告;

详细记录:iOS制作framework(包含第三方.a或framework的二次封装)_第4张图片
屏幕快照 2018-04-20 上午10.08.28.png
详细记录:iOS制作framework(包含第三方.a或framework的二次封装)_第5张图片
image.png

8.开始编译,选择Generic iOS Device 或者 真机,编译一下,再选择模拟器环境编译一下

9.上面的操作会出现两个版本的.framework,点击Products中的framework,选择右键在文件夹中查看。


详细记录:iOS制作framework(包含第三方.a或framework的二次封装)_第6张图片
image.png

10.真机版本适用于真机调试开发,模拟器版本适用于模拟器调试开发,将两个版本中的 二进制 文件通过终端合并成通用的,终端指令:lipo -create +上面两个文件的路径 +-output+ 合成后文件的输出路径(路径后再拼一下要导出的文件就不会出现其他教程里 can't move temporary file的error了,这样直接生成所需目标文件不会生成.lipo的文件);

lipo -create /Users/shiguang/Library/Developer/Xcode/DerivedData/ADRTCKit-dyfcbfdpajuozpbaowtdlgrxtgpm/Build/Products/Debug-iphonesimulator/ADRTCKit.framework/ADRTCKit /Users/shiguang/Library/Developer/Xcode/DerivedData/ADRTCKit-dyfcbfdpajuozpbaowtdlgrxtgpm/Build/Products/Debug-iphoneos/ADRTCKit.framework/ADRTCKit -output /Users/shiguang/Desktop/00000Demo/000/0lib/ADRTCKit
image.png
image.png
image.png

11.将合并生产的ADRTCKit文件替换真机生产的ADRTCKit.framework中的ADRTCKit文件

使用
12.创建一个新的项目,将替换后的ADRTCKit.framework添加到项目本地目录。
将制作的framework添加到工程里。


详细记录:iOS制作framework(包含第三方.a或framework的二次封装)_第7张图片
image.png
详细记录:iOS制作framework(包含第三方.a或framework的二次封装)_第8张图片
image.png
详细记录:iOS制作framework(包含第三方.a或framework的二次封装)_第9张图片
image.png

最后,导入项目需要的其他依赖库并配置工程(如将bitcode置为NO)。

参考:https://www.jianshu.com/p/e588bb0411d8
http://www.gaoshilei.com/2016/11/17/Static%20Library/

注意:

 framework中使用了 CateGory 的时候,调用app出现  "selector not recognized" ,解决方法是 在调用的app的 Build Settings --> Linking->  Other Linker Flags 中加上 -ObjC 或者-all_load 
参考:https://blog.csdn.net/tangaowen/article/details/39996213

你可能感兴趣的:(详细记录:iOS制作framework(包含第三方.a或framework的二次封装))