一、静态库简介
1、定义:
静态库即静态链接库(Windows 下的 .lib,Linux 和 Mac 下的 .a),说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。
2、使用:
(1)某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。
(2)对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间。
3、静态库和动态库的存在形式:
静态库:.a和.framework
动态库:.dylib(iOS9以后.tbd)和.framework
二、创建静态库
1、创建工程项目
2、创建完工程默认如下图,我们可以删除掉MyLibTest类,加入需要打包的框架等。
3、为了讲解简单,我们以MyLibTest类为例,现在我们在.h添加公开方法
4.配置要导出公开的文件.h
1)第一种方法
2)第二种方法
Build Phases --> New Headers Phase
在Public下添加需要公开的类
5、Build Setting --> Architectures 将Debug 修改为No
PS:Xcode
Release和Debug模式的区别
Debug:调试模式
Release:发布模式
我们在开发的时候建议使用Debug模式,上线的时候可以使用Release模式,这样发布的APP就不会在程序内部做大量的NSLog输出了,可以节省一些硬件设备的资源。Xcode默认是Debug模式。
修改步骤:
Product -->Scheme --> Edit Scheme --> Run
6、编译,生成.a
(1)选择真机Generic iOS Device 编译一遍,再选择模拟器编译一遍。此libMyLibTest.a将会由红变黑
(2)右击libMyLibTest.a,Show in Finder就会显示编译好的.a库。
7、真机与模拟器.a的合并
(1)进入到其所在的目录下,Products
(2)合并 命令:
lipo -create 真机静态库.a 模拟器静态库.a -output 合并后的静态库
(3)将合并后的静态库替换掉真机的静态库。即可以将Debug-iphoneos拖到工程使用了!
PS:合并后查询是否同时支持模拟器和真机
命令:
lipo -info 静态库.a
如果要支持armv7s,可以在编译前修改Archirectures
大家可以创建个新工程去享用了!