本文共 1975 字,大约阅读时间需要 6 分钟。
参考:http://www.cnblogs.com/bomo/p/4760791.html
http://www.jianshu.com/p/a1dc024a8a15
https://www.cnblogs.com/richard-youth/p/4856841.html
在工程中创建静态库:
静态库创建的两种方式:、
创建.framework的静态库:
边创建静态库边调试:
静态库和动态库的存在形式
静态库: .a 和 .framework
动态库: .dylib 和 .framework
静态库和动态库在使用上的区别
静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 (左图所示)
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存 (右图所示)
需要注意的是:项目中如果使用了自制的动态库,不能被上传到 AppStore!
制作 .a
1、新建项目-> 选择 “Cocoa Touch Static Library”
2、添加库需要包含的源代码,将你工程里的代码添加到打静态库工程里:
4.添加需要暴露的投文件
4.
5.
静态库有四中;真机debug,真机release,模拟器debug,模拟器release;
各自生成的静态库不能同时导入到应用中,如果要同时支持,需要合成后使用;
合成步骤:
(真机+模拟器)
如果,你的调试需要不断在真机和模拟器之间切换。那么,制作一个通用的静态库.a文件是一个好想法。
这样,使用该静态库文件就可以在真机和模拟器上调试。
制作过程也是非常简单。动手吧:
建议将Release的真机和模拟器的版本合并!----这样就可以通用了,不管是真机debug或release,还是模拟器debug还是release;
注意Debug和Release的iphonesimulator版本不能合并!只能将真机和模拟器的版本合并!
打开终端,执行以下操作:
一、在终端输入:lipo -create
二、将release-iphonesimulator下的.a拖进终端,输入一个空格;
三、继续将release-iphoneos 下.a 拖进终端,输入空格;
四、继续输入:-output ,打个空格;
五、输入合并后的.a所要放的文件路径(
lipo -create /Users/wofu/Desktop/SDK/Release-iphoneos/libWofuSDK.a /Users/wofu/Desktop/SDK/Release-iphonesimulator/libWofuSDK.a -output /Users/wofu/Desktop/SDK/WofuSDKLib.a
注意:最后的/WofuSDKLib.a需要自己加上 ),回车,在相应的文件下即可生成一个.a,该.a即是合并后的.a
吧原来单个静态库中的.a文件用合成后的.a文件替换掉,导入APP中,就可以用了,一般需要在APP中修改bit code为NO,Other Link flags添加-ObjC,这样可以保证编译的时候能链接上静态库。
一些额外的配置:(可以不配置)
Generate Debug Symbols
:DEBUG和RELEASE下均设为YES
(和Xcode默认一致);Debug Information Level
:DEBUG和RELEASE下均设为Compiler default
(和Xcode默认一致);Deployment Postprocessing
:DEBUG下设为NO,RELEASE下设为YES,这样RELEASE模式下就可以去除符号缩减app的大小(但是似乎设置为YES后,会牵涉一些和bitcode有关的设置,对于bitcode暂时还不太了解(´・_・`));Strip Linked Product
:DEBUG下设为NO,RELEASE下设为YES,用于RELEASE模式下缩减app的大小;Strip Style
:DEBUG和RELEASE下均设为All Symbols
(和Xcode默认一致);Strip Debug Symbols During Copy
:DEBUG下设为NO
,RELEASE下设为YES
;Debug Information Format
:DEBUG下设为DWARF
,RELEASE下设为DWARF with dSYM File
,dSYM文件需要用于符号化crash log(和Xcode默认一致);