iOS中 Framework静态库的创建和使用遇到的那些坑 韩俊强的博客

简介: 前言 网上关于Framework制作的教程数不胜数,然而都过于陈旧,最新的也是使用Xcode7的教程,而且有些设置也只给出步骤,并没有给出原因,而且按照有些教程制作出的framework还有些问题,所以我把自己制作framework的过程记录下来,并且使用的是最新的Xcode8环境。



前言

网上关于Framework制作的教程数不胜数,然而都过于陈旧,最新的也是使用Xcode7的教程,而且有些设置也只给出步骤,并没有给出原因,而且按照有些教程制作出的framework还有些问题,所以我把自己制作framework的过程记录下来,并且使用的是最新的Xcode8环境。本次制作framework,包含AFN,FMDB第三方,.a文件,xib,Bundle文件,还有Category分类,几乎制作和使用framework遇到的所有坑都被我遇到了,所以,此篇博客在我这属于干货,特此分享给大家,以免再走弯路!


制作篇:
将Mach-O Type设为Static Library,framework可以是动态库也可以是静态库,对于系统的framework是动态库,而用户制作的framework只能是静态库。




然后将Link With Standard Libraries关闭,我想可能是为了避免重复链接


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






使用到.a文件怎么办呢?
两处都要加,不然实质没打包进去!!







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


第二步:快捷键shift + command + G



第三步:Go并选择相应lib库:
如sqlite.3.0tdb就因该选择libtclsqlite3.dylib



================================================================================================================
1.解决分类(使用)
iOS 程序引入framework 类别报错unrecognized selector sent to class





2、bundle带来的打包失败



解决办法:


将bundle中plist文件中的Optimization删除

合成真机和模拟器错误:



原因:其中一个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。

更多:每周更新关注新浪微博iOS开发者交流群:446310206



目录
相关文章
|
1月前
|
数据采集 网络协议 开发工具
如何进行iOS技术博客的备案?
如何进行iOS技术博客的备案?
28 2
|
4月前
|
网络安全 开发者 iOS开发
iOS技术博客:App备案指南
本文介绍了移动应用程序(App)备案的重要性和流程。备案是规范App开发和运营的必要手段,有助于保护用户权益、维护网络安全和社会秩序。为了帮助开发者更好地了解备案流程,本文提供了一份最新、最全、最详的备案指南,包括备案目的、好处、对象、时间、流程、条件和注意事项等内容。
iOS技术博客:App备案指南
|
5月前
|
数据采集 网络协议 开发工具
 如何进行iOS技术博客的备案?
在本篇问答中,我们将为iOS技术博主介绍如何进行备案。如果你的iOS应用只包含简单的页面,并通过蓝牙进行数据采集和传输,那么你可能不需要备案。然而,如果你希望通过域名调用后端服务,建议进行备案以满足国内服务器访问的要求。我们将详细解释备案的三要素以及备案流程,并提供参考资料供你查阅。
|
开发工具 iOS开发 Perl
iOS SDK封装Framework带资源文件封装(二)
iOS SDK封装Framework带资源文件封装
 iOS SDK封装Framework带资源文件封装(二)
|
5G 开发工具 iOS开发
iOS SDK封装Framework带资源文件封装(一)
iOS SDK封装Framework带资源文件封装
iOS SDK封装Framework带资源文件封装(一)
|
存储 数据安全/隐私保护 开发者
iOS创建苹果证书、制作p12证书流程
iOS创建苹果证书、制作p12证书流程
iOS创建苹果证书、制作p12证书流程
|
iOS开发
iOS开发 - 打包静态framework后,引用时必须做的一件事,否则崩溃
iOS开发 - 打包静态framework后,引用时必须做的一件事,否则崩溃
158 0
|
开发工具 iOS开发 Perl
iOS开发 - undefined symbols for architecture x86_64,大多数都是缺少静态库,缺少静态库分下面几种
iOS开发 - undefined symbols for architecture x86_64,大多数都是缺少静态库,缺少静态库分下面几种
153 0
iOS开发 - undefined symbols for architecture x86_64,大多数都是缺少静态库,缺少静态库分下面几种
|
安全 数据安全/隐私保护 iOS开发
uniapp开发,window下创建ios打包证书的详情流程
uniapp开发,window下创建ios打包证书的详情流程
|
前端开发 iOS开发
React Native | 创建IOS原生模块
React Native | 创建IOS原生模块
323 0