现在再有一个功能,不知道是集成方是想用.a 还是framework 就将两种都给实现了 ,这篇介绍.a文件的生产, framework生产
生产.a库
1.首先创建一个新的工程,选择ios --》Framework&Library --》 Cocoa Touch Static Library 工程名例如 DemoA
2 之后我们会看到自动生成.h和.m文件 可以在.m文件中写你要的代码 或者新建.h和.m文件,将自动生成的删除了
3 咱们就再自动生成的文件中进行操作了
.h 文件
.m 文件
4.选择需要公开的头文件
5 静态库需要支持的版本
6 修改配置 Active Architecture Only修改为NO,否则生成的静态库就只支持当前选择设备的架构。
7 接下来就是编译生成.a文件了
1)真机编译的.a 文件 选中真机编译,对应生产一个真机的.a 文件
选择Generic iOS Device,command+b完成后,在工程的Products文件夹下的.a文件从红色编程了黑色。编译成功,然后Show in Finder。
下图是真机.a
2)模拟器编译的.a 文件 选中模拟器编译,对应生产一个模拟器的.a 文件
command+b完成后,在工程的Products文件夹下的.a文件从红色编程了黑色。编译成功,然后Show in Finder。对应的模拟器的.a文件
8 用命令lipo -info 静态库名字来查看,是支持真机还是模拟器
如图 Debug-iphonesimulator里面支持i386、x86_64,属于模拟器,用到真机会报错
Debug-iphoneos里面支持armv7、arm64,属于真机,用到模拟器就会报错
9 合并静态库-让模拟器和真机使用一个静态库
命令如下:
lipo -create 第一个.a文件的绝对路径 第二个.a文件的绝对路径 -output 最终的.a文件路径
这个生成的.a文件,就是支持真机和模拟器的静态库了。创建一个文件夹,把.a和头文件拖进去,这个文件夹就是我们所需要的。一般上线的时候只导入真机的,这样工程的体积也会小一些。
如何使用静态库呢
新建一个工程,把我们的静态库拖进去,导入头文件。
运行效果
注意 如果静态库中有Category类,就要在使用静态库项目的配置中添加-ObjC或者-all_load
如果有错误的地方欢迎指出,一起学习,一起进步。