改造动态framework为静态framework

 

公司产品之前使用xmpp作为底层库,之前同事编译自己的sdk静态库想生成.a库,但是各种编译问题(其实耐心修改配置都能解决),但是从百度找到方案用framework可以解决,所以最终使用的是framework,后来才发现,xcode6已经不想xcode5那样默认生成的就是静态framework,而是可以选择生成动态framework,而悲剧的是打开我们sdk的工程配置一看: dynamic library ! 悲剧的的起因就是app store不允许第三方的动态framework,所以为了客户的app上线,我们必须首先把当前的静态framework改为动态:

 

 

这样建立好的工程默认就是动态framework,如果将这样生成的库直接link到别的应用中使用,会报错“image not found dyld: Library not loaded:”,这个错误需要embedded binary library,把这个库再嵌入到工程才可以解决,如果是静态库则不需要,也不会出现这个问题。

 

下面开始简单配置几个改变编译属性(有的在动态库模式下已经配置好):

首先要确保修改 可执行文件 类型mach-o type为静态库

 



然后要修改此sdk(framework)支持的手机架构,注意为了支持多个版本需要保证armv7s的支持
然后配置生成的framework的位置,这里可能是xcode一个bug,如果建立文件时是真机编译的库,那么生成的库就在release-iphoneos路径下,工程编译后framework也是黑色的,也就是表示已经生成,但是改为模拟器后虽然编译成功,但framework会显示红色,也就是找不到,这时去对应路径找其实已经生成:


下图是配置工程输出的库的名称,注意生成的framework已经无法修改名称,只能在这时修改,否则会link会找不到库。
(图片已删除,避免误导大家)
经验证,这种修改库名称的方法不可行...

没有更多推荐了,返回首页