最新打包framework的血与泪
参考文章:
iOS 项目打包framework
生成静态Framework(包含界面、图片、第三方库、第三方framework)
[ iOS 打包.framework(包括第三方、图片、xib、plist文件)详细步骤及需要注意的地方
]
一、先创建一个静态库工程,选择framework
image.png
创建之后会出现截图中的一个.h 一个framework
.h
文件中存放在你想要public
的文件,如下
二、把项目中使用的三方框架 用cocoapods
生成
项目中使用了cocoapods
,你想要打包的文件中可能引用了第三方库,那么集成的时候在创建的framework
中也需要创建cocopods
另外如果你想手动导入第三方库的话即如下
image.png这样好像打包的时候不太行,可能我没有找到正确的操作方式
最后还是用了pods
image.png如果你在打包文件中引用了别的
sdk
,如上图中的.a文件
那么打包的时候需要copy进去如下
三、把需要打包的项目文件直接拖进来
image.png四、xcode打包framework的配置
1、将Mach-O Type设为Static Library,framework可以是动态库也可以是静态库,对于系统的framework是动态库,而用户制作的framework只能是静态库
image image.png这个可以设置成NO,保证所有设备(就是架构模式)如arm64 armv7s 和x86
如果有将要打包成framework
文件例如
image.png
这里面使用了图片,那么我们可以使用bundle
然后将图片直接拉进去
image.png
在将要打包成framework
项目文件中引用图片资源需要如下图的使用方式
如果项目中有xib文件
打包编译后 在将要打包成framework
项目文件中引用
另外在新建的项目里面使用framework
五、编译command + B
屏幕快照 2019-04-08 下午4.45.36.png
image.png
image.png
image.png
此处有个坑: 合并的是GameSDK
,另外output
的也必须是这个名字,我手贱改成其他的名字,让后导入后一直报错
output
合并后的的GameSDK
需要替换
然后将bundle 和framework 放在一个文件夹中
六、问题:
1、解决分类(使用)
创建工程导入framework 将原先打包的framework 和bundle 放在同一个文件夹中,导入工程
image.png
iOS 程序引入framework 类别报错unrecognized selector sent to class
image.png导入framework 运行会报错,找不到 #import <GameSDK/GameSDK.h>
将下图中的 M0dules
添加到Headers
不知道为啥就要这样干
如果我们将要打包成framework
的文件中包含.pch 文件如图
这个需要修改成framework里面的.pch路径