制作.a静态库

2017-07-19  本文已影响15人  Z_Tree先生

目的:

1>国内的企业,掌握有核心技术,同时是又希望更多的程序员来使用其技术,因此采用"闭源"的方式开发使用

例如:百度地图,友盟,JPush等

2>在企业开发中,一些核心技术或者常用框架,出于安全性和稳定性的考虑,也会提供静态库给程序员使用

制作.a静态库:

1.新建工程:选中第二个分类Framework & Library ->Cocoa TouchStatic Library,在这里面创建的工程,编译后就会生成.a文件,直接拖拽到你的开发工程中就可以使用。

2.暴露.h文件:单纯编译是没办法将.h文件暴露出来,所以要做如下操作,Build Phases ->Copy Files(0 items) -> + ,添加自己要暴露出来的.h文件

3.编译工程,生成.a文件:因为静态库在不支持的CPU架构上运行会报错,所以为了你制作的.a文件在模拟器与真机都能正常运行,请在真机与模拟器环境下都编译一次,生成两个CPU架构的.a文件,在进行合并,在丢到项目中就不会报错,下面是架构与型号的对照表:

4.查看.a文件的CUP机构:打开命令符->cd 拖拽.a文件到命令符中,回车->lipo -info 静态库名称,回车

5.设置能支持所有模拟器版本的.a文件:

6.设置成能支持所有真机和模拟器版本的.a文件:就是把模拟器的文件和真机的文件合并,重新命名。步骤:接着刚才的命令符 cd ..,会退到上个文件夹->lipo -create Debug-iphoneos(模拟器的.a文件夹)/libTools.a Debug-iphonesimulator(真机的.a文件夹)/libTools.a -output libTools.a(libTools.a:这个是你的类名,你自己改成自己生产的.a文件名)

之后就大功告成了!!!!!

#合并.a

lipo -create Debug-iphoneos/libTools.a Debug-iphonesimulator/libTools.a -output libTools.a

#合并.a的好处,开发过程中既可以在真机上调试,也可以在模拟器上调试

#合并.a的坏处,如果静态库太大,合并打包后,会非常大,因此很多第三方的静态库的.a是区分版本的

#今后在使用.a时一定注意版本

3.边开发边制作静态库

添加 个静态库的targets—>点击项—>targets—>+

测试静态库:项—>项 的target—>general—>linked framework—>添加静态库

打包静态库—>选中项 静态库—>编译(头 件)

4.使 静态库的注意点:静态库有真机和模拟器(测试阶段可以使 模拟器,发布阶段使 真机).好处:资

源包变

静态库有Debug版和release版本(测试阶段使Debug,发布阶段使release).好处:资源包变/运 速度变快/代码进 优化

5.制作.framework库1>动态库(默认)

注意:如果项 中 到了动态库进 设置:项—>项 的target—> general—

>Embedded—>添加动态库

2>静态库

制作静态库的修改配置:项—>静态库的target—>build setting—>搜索mach

—>static library

3>注意点

查看 个.framework静态库 持哪些架构:lipo -info framework件下 的 进制

合并静态库:合并framework件下 的 进制

上一篇下一篇

猜你喜欢

热点阅读