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

前言

网上关于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

时间: 2024-10-06 04:20:45

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

HTML5中 HTML格式化/HTML样式/链表/表格-样式 韩俊强的博客

HTML5学习从简单到复杂,循环渐进! 每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 1.HTML格式化 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <b>小韩哥博客更

HTML5中 HTML表单和PHP环境搭建及与PHP交互 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 知识点概括:HTML表单/PHP环境搭建/表单提交数据与PHP交互 第一部分:HTML表单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>表单</title> </head> <body> &l

iOS中 扫描二维码/生成二维码详解 韩俊强的博客

最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 指示根视图: self.window.rootViewController = [[UINavigationController alloc]initWithRootViewController:[SecondViewController new]]; 每日更新关注:http://weibo.com/hanjunqi

iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客

版权声明:本文为博主原创文章,未经博主允许不得转载. 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 简单介绍: [objc] view plain copy // OSI(开放式系统互联), 由ISO(国际化标准组织)制定   // 1. 应用层   // 2. 表示层   // 3. 会话层   // 4. 传输层   // 5. 网络层   // 6. 数据链接层   // 7. 物理层      // TCP/IP, 由美国国防部制定   // 1. 

iOS中 Realm的学习与使用 韩俊强的博客

iOS开发者交流QQ群:446310206  有问题或技术交流可以咨询!欢迎加入! 这篇直接搬了一份官方文档过来看的 由于之前没用markdown搞的乱七八糟的 所以重新做了一份 后面看到官网的中文文档更新不及时看着英文翻译了一点 搞的更乱了 :( 英文好的直接点右边->官方OC文档 Realm是一个移动端的数据库,Realm是SQLite和CoreData的替代者.它可以节省你成千上万行代码和数周的工作,并且让你精巧的制作出令人惊叹的用户体验. 文档版本 0.93.2在github上获取 需求

iOS中崩溃调试的使用和技巧总结 韩俊强的博客

 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 在iOS开发调试过程中以及上线之后,程序经常会出现崩溃的问题.简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析Crash文件在iOS开发中是比较常见的. 现在网上有很多关于解析崩溃信息的博客,但是大多质量参差不齐,或者有些细节没有注意到.今天写一篇博客总结一下我对崩溃调试的使用和技巧,如果有哪些错误或遗漏,还请指点,谢谢! 获取崩溃信息 在iOS中获取崩溃信息的方式有很多,比较常见的是

iOS中 Animation 动画大全 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博! iOS开发者交流QQ群: 446310206 1.iOS中我们能看到的控件都是UIView的子类,比如UIButton UILabel UITextField UIImageView等等 2.UIView能够在屏幕的显示是因为在创建它的时候内部自动添加一个CALayer图层,通过这个图层在屏幕上显示的时候会调用一个drawRect: 的方法,完成绘图,才能在屏幕上显示 3.CALayer 本身就具有显示功能,但

iOS中 视频直播功能-流媒体的使用(详解)韩俊强的CSDN博客

上一篇博客:(流媒体实现视频播放和下载功能):http://blog.csdn.net/qq_31810357/article/details/50574914 最近视频直播功能比较火,处于需求,研究了一番,根据分析决定使用流媒体实现,代码简单易懂,接下来看教程: 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 简单介绍: HLS 协议 : >5M会被AppStore拒绝  服务器要求低   延迟高    多平台 RTMP 协议:  电视直播   PC端使用

iOS中 仿Tumblr点赞心破碎动画 韩俊强的博客

上一篇:高仿Tumblr热度-滚动条数-JQScrollNumberLabel 最近Tumblr轻博客无论是web端还是移动端,都非常受欢迎,简单调研了一下,其中动画是我感兴趣的,特此写了个仿Tumblr点赞心破碎动画: 1.首先看下效果: 2.模仿Tumblr中的效果应用如下: 原理:使用按钮点击Action增加两个事件,通过改变背景hidden和frame,切换图片,增加动画效果等: setupUI及touch Action: - (void)setupUI { // 点击的btn UIBu