静态库和动态库的存在形式
- 静态库:.a和.framework
- 动态库:.dylib和.framework
创建自己的库的步骤
-
新建项目,选择想要创建的库类型(以打包.a文件为例)
- 写好自己的工具类,比如:在.h中声明一个方法
+(NSInteger)sumNum1:(NSInteger)sumNum1 sumNum2:(NSInteger)sumNum2;
在.m中实现方法(自己的核心代码,不想被别人看到)
+(NSInteger)sumNum1:(NSInteger)sumNum1 sumNum2:(NSInteger)sumNum2
{
return sumNum1 + sumNum2;
}
3.点击工程文件-->Build Phass -->Copy Files添加.h文件(需要暴露在外,方便其他用户引入的文件)
-
然后分别在模拟器情况下、真机调试情况下(不必真的连接真机)编译 command+B
5.点击项目中的.a文件 在Finde中显示就会发现自己打包好的.a文件了
*每一个设备豆油属于自己的CPU架构(4s、6plus)
*每一个静态支持的架构是固定的(libstaticlib.a)
*查看静态库支持的架构(命令行代码):lipo -info libstaticlib.a(info后面跟的是自己.a的文件名)
模拟器
4s-->5:用的都是i386架构。
5s-->6plus:用的都是x86_64
真机
3gs-->4s:armv7
5/5s:armv7s,静态库只要支持了armv7,就可以跑在armv7s的架构上
5s-->6plus:arm64*/```
#####注意:由于架构的不同,导致在一种模拟器下编译出来的.a文件不适用于其他模拟器,解决办法如下
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1480477-8839755fae8185f3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
静态库合并(终端命令行):lipo -create 静态库1 静态库2 -output 新的静态库
***
以上方法是单纯的打包一个静态库,如何在项目中直接调试静态库呢,其实大同小异,新建一个项目-->添加一个静态库
![添加静态库](http://upload-images.jianshu.io/upload_images/1480477-686ed8928ccccccb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
然后把你想要打包成静态库的代码全部放到这个文件夹下
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1480477-50f1f9d8212cc5ee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
此时编译代码会报错,原因是没有导入自带的静态库,方法步骤如下
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1480477-8dec4ad4148b4a25.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
接下来就可以在项目中,边开发边调试静态库了,等调试没有问题之后,再进行打包.a文件(打包流程和上面的一样),供他人使用。
***
打包.framework时,默认是动态库(苹果官方不让上架,徐改成静态库)只需在Build Settings下搜索mach需改framework的类型为静态库
![修改静态库](http://upload-images.jianshu.io/upload_images/1480477-438646332c55e8c6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)