XCode8 生成Framework(Xib+png)
简单记录一下用Xcode8生成静态Framework的步骤,因为比较繁琐,容易出错,特此记录一下:
1.创建项目
如图选项所示:
2.新建bundle用来存放Xib和png等资源文件(注意名字不能和静态库重复)
因为iOS没有这一项,所以需要选择macOS,然后搜索bundle
3.设置frameWork为静态库
注意图中左侧选择的是黄色小箱子,然后在build-setting中搜索mach,将设置项更改为static library。默认是Dynamic library
4.设置新建bundle为IOS同时关闭bitcode
刚才新建的bundle是针对macOS的,所以需要我们手动修改BaseSDK,如图,默认是macOS
5.新建项目,ViewController + Xib
特别注意的是:如果VC中需要用图片,不要再Xib中设置,因为到时候会找不到路径而无法展示,所有图片都需要纯代码设置, 设置图片和LoadXib方式一样:
6.将Xib和png放入bundle中
7.设置Bundle的COMBINE_HIDPQ_IMAGES为NO
否则bundle中的png图片经过编译打包会变成tiff的文件,进而导致对应图片找不到
8. 设置静态库暴露的头文件
将需要暴露出来的.h文件从project中拖到Public中
9.生成静态库framework和bundle文件
分别选中左下角图中静态库和bundle文件,然后run,然后open in finder,就会得到两个文件,然后将两个文件拖入项目中
10.项目中设置
将以上生成的静态库和bundle文件拖入项目中后:
手动将刚才生成的framework拖入进来
11.引入头文件,调用头文件
手机上出现了静态库中封好的带界面的SDK!
Have Fun!
如果在引入static library之后,出现报错的情况:
1、unrecognized selector sent to instance
Terminating app due to uncaught exception 'NSInvalidArgumentException'
出现上述情况可能是因为需要调整如下设置:
2、如果出现
Undefined symbols for architecture arm64:"_OBJC_CLASS_$_FBSession",referencedfrom:someFile
ld:symbol(s) not found for architecture arm64
这时很大可能是因为静态库编译出错。
可以进入
中去查看是否缺少了某些.m文件,导致的错误