ios开发静态库生成
首先简单说下哈: 库就是程序代码的集合,是共享代码的一种方式
分为开源库(sd,mi,afn)和闭源库(看不到具体实现的)
闭源库分为静态库和动态库
静态库: .a 和 .framework
动态库: .dylib 和 .framework
静态库和动态库在使用上的区别
静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存
注意啦: 使用自己制作的动态库无法上传appstore
接下来讲讲制作.a的方法
第一步: 新建一个工程选择如下:
之后下一步啦新建工程。
打开工程后干掉声称的.h 和.m文件如下
第二部:把需要封装的类拖到工程中来
然后选择需要暴露出来的 .h 文件, .m 文件会自动编译到 .a 文件中
选择真机设备,然后 Command+B 编译, libMJRefresh.a 文件从红色变为黑色
就成功了, show in finder 就是需要的库啦。
这里需要注意的是: 选择 真机运行的出来的是 真机运行需要的.a文件, 只能运行在真机上, 跑模拟器就会报错。
因为手机的cpu架构和电脑的不同造成的。。
解决方法:
合并真机command +B出来的.a 和模拟器command +B出来的.a
合并静态库让模拟器和真机都能用的招
lipo -create /Users/gti/Desktop/Debug-iphoneos/libJTK.a /Users/gti/Desktop/Debug-iphonesimulator/libJTK.a -output /Users/gti/Desktop/libJTK.a
lipo -create :固定的命令
/Users/gti/Desktop/Debug-iphoneos/libJTK.a 真机跑出来的.a文件的位置 这位置选中.a 文件直接拖到终端就ok
/Users/gti/Desktop/Debug-iphonesimulator/libJTK.a 模拟器跑出来的.a文件的位置
output 固定命令行
/Users/gti/Desktop/libJTK.a 合并ok 的最终文件的位置以及名字
使用 .a
如何使用 .a
直接将 .a 、 .h 、资源文件拖拽到其他项目中即可