您的位置:首页 > 移动开发 > IOS开发

IOS 静态库的制作

2016-06-03 16:51 211 查看
iOS 开发中经常使用到第三方 SDK,经常是打包成 .a 文件,我们称之为静态库,所以自然也就有了动态库. 

静态库  一般以 .a 或 .framework 结尾   动态库  以.dylib 和 .framework结尾. 静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存.但项目中如果使用了自制的动态库,不能被上传到 AppStore.苹果只能使用其提供的动态库.

如何制作静态库?

           1. 创建一个工程

           




 2.新创建工程



3. 删除系统创建的 staticLibTest.h 和 staticLibTest.m 文件,导入自己想要打包的文件.  eg: YAdchiveTest1.h



4.可以看到此时的 libStaticLibTest.a 文件是红色的, 选择 IOS Device , command + B 编译.



5.编译完成  libStaticLibTest.a 文件 由红色变为色.此时说明真机版的 .a 文件打包完成. 打包之前可在如下图位置选择需要暴露出来的头文件.





6. 生成模拟器运行的 .a 文件.选择模拟器. command + B 编译.此时可生成模拟器对应的 .a 文件. 注意: 运行在哪个模拟器上生成的 .a 文件就只能运行在其对应的 cpu 架构上.
    cpu
b8b1
架构 : iPhone 4s  之前: i386   5 之后是 x86_64.  要想生成通用的 .a 文件,如下图设置,把 YES --> NO. command + B 运行.



7. 右键 工程下的 Products 文件夹下的 .a 文件 --> show inFinder.则可以看到刚才编译的两个文件. Debug-iphoneos 为真机的, Debug-iphonesimulator 为模拟器的.


 

8. 打开终端. 进入到 Debug-iphoneos 的上级目录,cd xxxx  .进入到文件夹后 输入 : lipo -info + .a文件路径.即可查看对应.a 文件所支持的 cpu 架构. 如下图.



9. 为了在模拟器和真机上同一个 .a 文件都可以运行,避免真机和模拟器导入两个.a 文件,可以将模拟器和真机的两个 .a 文件合为一个文件.
   
    终端键入命令: lipo  -create  真机.a绝对路径 模拟器.a 绝对路径  -output/Users/电脑名/Desktop/xxxx.a    合成文件存放桌面



10. 测试   new  一个新工程,导入 .a 以及生成 .a 是的文件中的 .h 文件



11. 在 appDelegate 中运行如下



    至此,一个静态库的基本制作就完成了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: