前言
网上关于Framework制作的教程数不胜数,然而都过于陈旧,最新的也是使用Xcode7的教程,而且有些设置也只给出步骤,并没有给出原因,而且按照有些教程制作出的framework还有些问题,所以我把自己制作framework的过程记录下来,并且使用的是最新的Xcode8环境。本次制作framework,包含AFN,FMDB第三方,.a文件,xib,Bundle文件,还有Category分类,几乎制作和使用framework遇到的所有坑都被我遇到了,所以,此篇博客在我这属于干货,特此分享给大家,以免再走弯路!
制作篇:
将Mach-O Type设为Static Library,framework可以是动态库也可以是静态库,对于系统的framework是动态库,而用户制作的framework只能是静态库。
Image may be NSFW.
Clik here to view.
然后将Link With Standard Libraries关闭,我想可能是为了避免重复链接
Image may be NSFW.
Clik here to view.
选择工程文件>target第一项>Build Setting>搜索linking,然后几个需要设置的选项都显现出来,首先是Dead Code Stripping设置为NO,网上对此项的解释如下,大致意思是如果开启此项就会对代码中的”dead”、”unreachable”的代码过滤,不过这个开关是否关闭,似乎没有多大影响,不过为了完整还原framework中的代码,将此项关闭也未曾不可。
Image may be NSFW.
Clik here to view.
Clik here to view.
Image may be NSFW.
Clik here to view.
Clik here to view.
第二步:快捷键shift + command + G
Image may be NSFW.
Clik here to view.
Clik here to view.
================================================================================================================
Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
2、bundle带来的打包失败
Image may be NSFW.
Clik here to view.
解决办法:
Image may be NSFW.
Clik here to view.
Clik here to view.
Image may be NSFW.
Clik here to view.

然后将Link With Standard Libraries关闭,我想可能是为了避免重复链接
Image may be NSFW.
Clik here to view.

选择工程文件>target第一项>Build Setting>搜索linking,然后几个需要设置的选项都显现出来,首先是Dead Code Stripping设置为NO,网上对此项的解释如下,大致意思是如果开启此项就会对代码中的”dead”、”unreachable”的代码过滤,不过这个开关是否关闭,似乎没有多大影响,不过为了完整还原framework中的代码,将此项关闭也未曾不可。
Image may be NSFW.
Clik here to view.

使用到.a文件怎么办呢?
两处都要加,不然实质没打包进去!!
Image may be NSFW.Clik here to view.

Image may be NSFW.
Clik here to view.

加第三方如:AFN,FMDB该怎么办?
记住:增加第三方拖包进去后,不要加framework依赖库,只加tdb依赖库,确保通过编译!
温馨提示:在加tdb时,用该加lib链接库,如下图:
第一步:
Image may be NSFW.Clik here to view.

第二步:快捷键shift + command + G
Image may be NSFW.
Clik here to view.

第三步:Go并选择相应lib库:
如sqlite.3.0tdb就因该选择libtclsqlite3.dylib
Image may be NSFW.Clik here to view.

================================================================================================================
1.解决分类(使用)
iOS 程序引入framework 类别报错unrecognized selector sent to class
Image may be NSFW.
Clik here to view.

Image may be NSFW.
Clik here to view.

2、bundle带来的打包失败
Image may be NSFW.
Clik here to view.

解决办法:
Image may be NSFW.
Clik here to view.

将bundle中plist文件中的Optimization删除
合成真机和模拟器错误:
Image may be NSFW.Clik here to view.

原因:其中一个framework是合成过的,不能再合成了!
3. framework推荐如下设置:
Mach-O Type > Static Library;( 静态库,如果需要提审 Appstore 的话不允许使用动态库的)
Dead Code Stripping > NO;(是否消除无效代码)
Link With Standard Libraries 默认是YES,如果没有特殊要求的话,默认就可以。(设为 NO 要配置Other Linker Flags)
Enable Bitcode > NO;(支持旧库)
最终制作好的framework要:删掉info.plist,移出 framework。
Image may be NSFW.
Clik here to view.
更多:每周更新关注新浪微博!iOS开发者交流群:446310206
作者:qq_31810357 发表于2017/5/19 14:13:54 原文链接
阅读:0 评论:0 查看评论