swift 文件无法暴露头文件,因而不支持静态库.a开发!!!!!
一、新建工程
首先创建一个新的工程,选择ios --》Framework&Library --》 Cocoa Touch Static Library 工程名例如 DemoA
2018101216374751.png 20181012163844894.png
之后我们会看到自动生成.h和.m文件 可以在.m文件中写你要的代码 或者新建.h和.m文件,将自动生成的删除了
20181012164024594.png 20181012164332129.png 20181012164452415.png二、选择需要公开的头文件
20181012164817552.png三、静态库需要支持的版本和架构
20181012165049454.png修改配置 Active Architecture Only修改为NO,否则生成的静态库就只支持当前选择设备的架构
2018101216515849.png
四、编译生成.a文件
真机编译的.a 文件 选中真机编译,对应生产一个真机的.a 文件
20181012164636942.png选择Generic iOS Device,command+b完成后,在工程的Products文件夹下的.a文件从红色编程了黑色。编译成功,然后Show in Finder
20181012165630385.png下图是真机.a
20181012165904403.png模拟器编译的.a 文件 选中模拟器编译,对应生产一个模拟器的.a 文件
201810121700099.pngcommand+b完成后,在工程的Products文件夹下的.a文件从红色编程了黑色。编译成功,然后Show in Finder。对应的模拟器的.a文件
20181012170056753.png 20181012170142653.png五、lipo命令
用命令lipo -info 静态库名字来查看,是支持真机还是模拟器
20181012170513234.png如图 Debug-iphonesimulator里面支持i386、x86_64,属于模拟器,用到真机会报错
20181012170714429.pngDebug-iphoneos里面支持armv7、arm64,属于真机,用到模拟器就会报错
六、合并静态库
合并静态库-让模拟器和真机使用一个静态库
lipo -create 第一个.a文件的绝对路径 第二个.a文件的绝对路径 -output 最终的.a文件路径
20181012170912366.png
这个生成的.a文件,就是支持真机和模拟器的静态库了。创建一个文件夹,把.a和头文件拖进去,这个文件夹就是我们所需要的。一般上线的时候只导入真机的,这样工程的体积也会小一些
20181012171018924.png
七、使用静态库
新建一个工程,把我们的静态库拖进去,导入头文件
20181012171226130.png 20181012172253343.png
运行效果
20181012172454874.png注意 如果静态库中有Category类,就要在使用静态库项目的配置中添加-ObjC或者-all_load
网友评论