ios 静动态库包含静态库第三方怎么处理

iOS&&&制作静态库(静态库嵌套静态库,并且还是用了类别)
最近整一个静态库,是在第三方的静态库基础上制作静态库,并且自己还加了类别。结果正常的制作静态库,总是无法使用,一直崩溃,原因是无法识别类别中的方法。
&我搜了很多网上说的静态库中无法识别类别的方法,但是都无济于事。最后找到了解决方案。
第一个重点:识别静态库中的类别方法。
&在网上找了下,找到了解决办法。
在静态库的工程和你要引用静态库的工程都要做一个设置
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://img.my.csdn.net/uploads//_2756.jpg" ALT="" STYLE="box-sizing: border- vertical-align: outline: rgb(0, 0, 0); margin: 0 padding: 0 max-width: 100%;"
TITLE="iOS&&&制作静态库(静态库嵌套静态库,并且还是用了类别)" />
对于64位和iPhone
OS应用程序,有一个链接错误,防止ObjC的对象文件从静态库只加载包含类别和无类。解决方法是使用-all_load或-force_load标志。
但是我即使用了上边的方法,依旧不能处理,还是崩溃。请看第二步。
第二个重点:使用的第三方静态库,注意事项
使用第三方静态库,我使用的是release,debug,分开的,没有合二为一,但是我制作静态库release,debug模式的时候,我把第三方的两个release,debug静态库都加进去了,所以打出来的包一直使用崩溃!!!!
注意事项就是:制作release模式的时候第三方的静态库也只能是release模式,debug模式同理。(这是我花了一天的时间得到的教训,~_~)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Pages: 1/2
主题 : 制作静态库需要包含其他第三方类库怎么办?
级别: 新手上路
可可豆: 115 CB
威望: 115 点
在线时间: 615(时)
发自: Web Page
来源于&&分类
制作静态库需要包含其他第三方类库怎么办?&&&
我制作个静态库,但是需要包含Afnetworking,但是如果包含了这个第三方库,别的项目使用我的静态库就会产生重复的冲突,应该怎么处理呢?
级别: 骑士
可可豆: 527 CB
威望: 522 点
在线时间: 878(时)
发自: Web Page
回 楼主(sadas) 的帖子
把AF改了,里面的const ,@interface @class 的东西重命名。你的AF,苦力呀.......不然就让开发者自己解决,有解决库冲突的办法,不过这肯定是不受开发者待见的,更何况是AFN
级别: 骑士
可可豆: 527 CB
威望: 522 点
在线时间: 878(时)
发自: Web Page
回 楼主(sadas) 的帖子
我可以花点时间帮你做好,前提是收点钱,保证你能用为止
级别: 精灵王
UID: 30808
可可豆: 5899 CB
威望: 5898 点
在线时间: 1689(时)
发自: Web Page
做自己的库或sdk原则上就不要使用第三方库,afnetworking用NSURLSession替换掉
级别: 骑士
可可豆: 527 CB
威望: 522 点
在线时间: 878(时)
发自: Web Page
回 3楼(zc09v) 的帖子
突然感觉自己有点无耻
级别: 骑士
可可豆: 527 CB
威望: 522 点
在线时间: 878(时)
发自: Web Page
再回首答楼主,改AFN可以,自己封装过的NSURLSession给你也可以,只要午饭一个菜钱
级别: 精灵王
UID: 30808
可可豆: 5899 CB
威望: 5898 点
在线时间: 1689(时)
发自: Web Page
老问题,新收获
级别: 新手上路
UID: 462356
可可豆: 17 CB
威望: 10 点
在线时间: 28(时)
发自: Web Page
回 6楼(zc09v) 的帖子
打不开。。。。。。。。
图片:屏幕快照
下午5.48.34.png
级别: 骑士
可可豆: 734 CB
威望: 719 点
在线时间: 335(时)
发自: Web Page
别的项目用cocoapods管理AF,然后在linker binary with Library那里不添加libAFNetworking.a
级别: 精灵王
UID: 30808
可可豆: 5899 CB
威望: 5898 点
在线时间: 1689(时)
发自: Web Page
回 7楼(oik123) 的帖子
嗯 写的不好 删了 准备重写
简单来说就是 你sdk工程中如果用到了第三方库,不要以文件直接引用的方式或静态库的方式去调用,用动态库(WWDC2014 后苹果真正开放了动态库的支持),这样第三方库就不会编译进你的sdk里面了。客户如果有使用同样的库也不会产生冲突了,如果没有,你可以在使用手册里告知对方你们sdk里依赖哪些第三方库,要求他们引进去[ 此帖被zc09v在 10:44重新编辑 ]
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。最近一个人在做一个即时通讯SDK的项目,所以就用到了静态库的打包,开始遇到一些困难和莫名的bug,不过现在已经基本完成。现在,浅谈一下个人经验。首先,概述一些最基本的名词概念,也是为了大家能更好的理解我们究竟在做什么 为什么要这样做& 有了这些基本的逻辑思维& 那么其他什么就都不是事哈 (不要拦我 我要开始发功了)哈哈哈
一、概念篇
什么是库?
库是程序代码的集合,是共享程序代码的一种方式
根据源代码的公开情况,库可以分为<span style="color:#种类型
公开源代码,能看到具体实现
比如SDWebImage、AFNetworking
不公开源代码,是经过编译后的二进制文件,看不到具体实现
主要分为:静态库、动态库
静态库和动态库的存在形式
静态库:.a 和.framework
动态库:.dylib 和.framework
静态库和动态库在使用上的区别
静态库:链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存
需要注意的是:
动态库,不能被上传到AppStore(&#36924;&#26684;太高 大苹果可是不允许的哈& 哈哈)
总结:个人觉得 .a静态库的 本身就是一个对代码或者一个功能的封装,只不过是不开源的。
二、制作流程(如下均是Xcode7展示的操作)
新建一个纯净的项目-&&选择&“Cocoa Touch Static Library”
输入想要打包的静态库的名称
把库需要包含的源代码拖入此项目中
此处有一些注意点见下图
选择需要暴露出来的.h文件,.m文件会自动编译到.a文件中
分别选择模拟器和真机(并不需要真正的手机),依然Command&#43;B ,模拟器和真机环境下用的.a文件是分开的
这一步,如果看到.a文件由红变黑说明编译等都没有问题& 已经完成一半了
右击“ShowInFinder”,查看制作好的.a文件
Debug-iphoneos文件夹里面的东西是用在真机上的
Debug-iphonesimulator文件夹里面的东西是用在模拟器上的
如果想让一个.a文件能同时用在真机和模拟器上,需要进行合并
在终端输入指令
首先文件切换到 Products文件夹&
lipo -create&Debug-iphoneos/libXXX.a
Debug-iphonesimulator/libXXX.a& -output&
蓝色部分是固定指令
红色、紫色是真机和模拟器.a文件的路径
绿色是所合成.a文件的路径
.a文件的体积(一般情况下)
真机用的.a& 模拟器用的.a
所合成.a== 真机用的.a&#43;
模拟器用的.a
使用.a 静态库
现在.a静态库和头文件都有了就可以把它们拖到项目中使用了
使用时直接#import&xxx.h&就可以直接导入调用使用了
至此,静态库算是制作完了,但是有以下几点需要说明
无论是 .a 静态库还是.framework
静态库,最终需要的都是:
二进制文件 &#43;.h&#43;
其它资源文件
倘若自己所需要打包的静态库代码中用到了别人的三方框架比如“AFNetworking”等,此时只需要把用到的三方库文件的头文件在选择暴露头文件时都给暴露出去,然后导入的项目中如果也用到了相同的三方框架,此时此项目就不需要拖入这个三方库代码直接,需要使用时直接把你所提供的.a静态库和头文件导入 然后#import你所提供的相关头文件即可使用(注意:一定是以你的打包的为准)比如 直接#import&xxx.h&
若是自己的静态库原代码中使用了分类& 比如NSString&#43;xxxx,此时一定需要更改下项目的环境配置
添加一个“-ObjC”(注意&O&&C&是大写的)
总结:个人的第一个博客,各种小紧张哈,若有问题可以直接在博客回复。个人原创,转载请说明出处。
本文已收录于以下专栏:
相关文章推荐
前段时间做了个sdk打包成动态库,发现使用非常方便各种好处也特别多,然后在最后将APP打包时出问题了,打包时候动态库打不进去,想了很多办法还是没有解决,又因为赶时间所以只能重新打成静态库了。
&#160;
...
最近一个人在做一个即时通讯SDK的项目,所以就用到了静态库的打包,开始遇到一些困难和莫名的bug,不过现在已经基本完成。现在,浅谈一下个人经验。首先,概述一些最基本的名词概念,也是为了大家能更好的理解...
网上流传了太多关于合并lib库的方法,自己也尝试过,但大多失败。有感于这种急于解决问题,经过百般尝试后依旧无果的无奈心情,小翁在这里用一个实例来完整阐述如何在mac中合并lib静态库。
这里以移动广...
HOMECATEGORIESTAGSABOUT&#160;FEED
this post is featured
【iOS开发】打包静态库.a文件
1、创建项目时,如下图选择,选择一个静态库
  2、创建好了工程后,会自动生成一个以工程名为名的类,可以在这个类里代码,也可删除这个类,自己重新创建来实现功能;我在这里就在这个类里实现两个数求和...
1、下载 protobuf-2.5.0-mast
2、在解压后的&#160; 目录内部建立一个 目录 名字随便写,我这里写的 是 xcodeProject 如图:
这是一篇很赞的文章,特转载过来,方便以后查阅
Cocoapods作为OS
X和iOS开发平台的类库管理工具,已经非常完善和强大。通常我们用pod来管理第三方开源类库,但我们也极有可能会开发一...
制作.a1、新建项目 –& Cocoa Touch Static Library
2、添加库需要包含的代码
3、将需要暴露的.h文件暴露出来,.m会自动编译到.a文件中
4、分别选择真机设备和模...
这节内容我们
他的最新文章
讲师:姜飞俊
讲师:汪木铃
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 android 第三方静态库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信