平常开发中,咱们会遇到某些状况不能提供源码,项目组件化等需求,这时候咱们就可使用SDK开发,在OC的开发中,咱们涉及到的通常是静态库(.a)或者动态库(.framework)。(注:不是全部的.framework就必定是动态库)
bash
静态库:连接时完整地拷贝至可执行文件中,被屡次使用就有多份冗余拷贝。表现形式为 .a和.framework
动态库:连接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。 表现形式为 .dylib和.framework
注意:动态库只能苹果使用,若是项目中使用了动态库不容许上架(如:jspatch)
jsp
.a是一个纯二进制文件,.framework中除了有二进制文件以外还有资源文件。 .a文件不能直接使用,至少要有.h文件配合,.framework文件能够直接使用。 .a + .h + sourceFile = .framework。 建议用.framework.组件化
.framework
首先咱们先建立一个.workspace
测试
.frmawork
frmawork
加入到
workspace
framewrok
中能够封装入本身须要封装的内容
StringUtils
中加入了一个测试方法
#import "StringUtils.h"
@implementation StringUtils
+ (NSString *)testString:(NSString *)string {
return [@"MQTestFramework: " stringByAppendingString:string];
}
@end
复制代码
一、设置Build Setting参数 将Build Active Architecture only设置为NO ui
二、设置Build Setting参数 Mach-O Type 为Static Library (配置静态、动态) spa
三、设置Build Setting参数 在Architectures下增长armv7s 3d
四、在Build Phases中设置须要公开和须要隐藏的头文件 code
五、将头文件引入到MQTestFramwork
(本身SDK的头文件) cdn
Command + B
运行项目,在
Product
中找到
framework
.framework
拉入须要使用的项目中