iOS framework 包集成

最近整理了部分文件,封装了一些比较实用的文件库顺便整理出framework的含义,以及打包过程

什么是库

库是共享程序代码的一种方式,一般分为静态和动态

动态库和静态库的区别

静态库:链接完整的拷贝在执行文件中
动态库: 运行的时候就加载到内存中,供程序使用,系统只调用一次,多个程序调用,节省内存。

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。

终端代码未: lipo -create /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包

你可能感兴趣的:(iOS framework 包集成)