最近整理了部分文件,封装了一些比较实用的文件库顺便整理出framework的含义,以及打包过程
什么是库
库是共享程序代码的一种方式,一般分为<u>静态和动态</u>
动态库和静态库的区别
静态库:链接完整的拷贝在执行文件中
动态库: 运行的时候就加载到内存中,供程序使用,系统只调用一次,多个程序调用,节省内存。
iOS静态库
.a 和 .framework
iOS动态库形式
.dylib 和 .framework
面试题: framework 是静态库吗?
系统的framework 是动态库 我们打包的是静态库
为什么要使用静态库
lz 是为了实现模块化,固定的业务转成静态库,还能分享代码,但是又不让别人看你的代码实现(其实是写别人不能改的代码, 哈哈)。
不废话 直接将过程
1、打开Xcode,新建工程。
选择 create framework & library
选择 framework
2.创建我们所需要的文件类,比如继承与NSobject 的testH 类
3、实现功能。
在新创建的类里面声明方法并实现。这里我写一个sayHello的方法,以便后面测试使用。
4、更改参数
在TARGETS下选中工程,在Build Settings下更改几个参数
在Architectures下增加armv7s,并选中。将Build Active Architecture Only 设置为NO。
5、设置Headers
将你要公开的头文件拖至Public下,要隐藏的放在Private或者Project下,当然,隐藏的头文件就无法再被引用。
6、打包Framework
1.选中模拟器,编译程序
2.选中测试机,编译程序
3.在finder中找到framework文件
找到下图中所示的Test文件,一个是Debug-iphoneos(真机)下的,一个是Debug-iphonesimulator(模拟器)下的。
4.通过终端命令将两个framework合为一个模拟器和真机都可使用的framework。
终端代码未: <u>lipo -create</u> /Users/chenjiazhen/Library/Developer/Xcode/DerivedData/CharTest-dxlrsuvcbsfyohedbbfitrvbqygx/Build/Products/Debug-iphoneos/CharTest.framework/CharTest /Users/chenjiazhen/Library/Developer/Xcode/DerivedData/CharTest-dxlrsuvcbsfyohedbbfitrvbqygx/Build/Products/Debug-iphonesimulator/CharTest.framework/CharTest -output /Users/chenjiazhen/Desktop/frameWork
加黑加粗 代表的是第一个使用手机打出的frameworkTest 路径 斜体代表的是模拟器文件的路径
-output 代表导出的 后面的路径是文件夹
然后 会生成一个.lipo文件
此时 修改后缀.framework 即可生成我们需要的framework包