ios 引用第三方时常需要引用各种.a文件, framework框架,接下来我将分开简述一下这三种文件的创建过程,这里是.a文件的生成过程
-
首先创建一个新的工程,选择ios --》Framework&Library --》 Cocoa Touch Static Library 工程名例如 StticLibrarySDK
-
之后我们会看到自动生成.h和.m文件 可以在.m文件中写你要的代码 或者新建.h和.m文件,将自动生成的删除了
-
咱们就再自动生成的文件中进行操作了,这里我用LBXPermissions做例子,在.h中加了一些类方法
-
选择需要公开的头文件,这一步很重要
-
静态库需要支持的版本,如果想知道为什么这么设置,可以看上篇文章ios Architectures相关设置说明
修改配置 Active Architecture Only修改为NO,否则生成的静态库就只支持当前选择设备的架构。
-
接下来就是编译生成.a文件了
1)真机编译的.a 文件 选中真机或者Generic iOS Device,然后comd+b编译,对应生产一个真机的.a 文件,在工程的Products文件夹下的.a文件从红色编程了黑色,表示编译成功,然后Show in Finder。看到真机.a文件
2)模拟器编译的.a 文件 选中模拟器编译,对应生产一个模拟器的.a 文件
-
用命令lipo -info 静态库名字来查看,是支持真机还是模拟器
如图 Debug-iphonesimulator里面支持i386、x86_64,属于模拟器,用到真机会报错
Debug-iphoneos里面支持armv7、arm64,属于真机,用到模拟器就会报错
-
合并静态库-让模拟器和真机使用一个静态库
命令如下:
lipo -create 第一个.a文件的绝对路径 第二个.a文件的绝对路径 -output 最终的.a文件路径
这个生成的.a文件,就是支持真机和模拟器的静态库了。创建一个文件夹,把.a和头文件拖进去,这个文件夹就是我们所需要的。一般上线的时候只导入真机的,这样工程的体积也会小一些。
如何使用静态库呢
新建一个工程,把我们的静态库拖进去,导入头文件。
注意 如果静态库中有Category类,就要在使用静态库项目的配置中添加-ObjC或者-all_load
算了,本来想写我的笔记,结果写完了发现一篇整理的很好的文章,那我就不多余了吧,大家也可以看他的文章了解.a和.framework封装的方法和区别,分享给大家 iOS 库.a 和 framework的区别和创建
参考文章:https://blog.csdn.net/u013983033/article/details/83030389