制作framework
操作步骤
-
新建工程选择iOS —> Cocoa Touch Framework
pod 需要的三方库
- pod init
- open Podfile 编辑framework依赖的第三方库
- pod install
- 打开workspace
编辑framework
-
1.添加所需文件
-
2.TARGETS —> Build Settings 中设置相关项 Build Active Architecture Only 设置为NO的意思是当前打包的.framework支持所有的设备.否则打包时只能用当前版本的模拟器或真机运行.
3.Build Setting 搜索linking 设置Dead Code Stripping 为NO是编译选项优化,包瘦身,(可不改) Mach-O Type 选中StaticLibrary (静态库) Xcode默认是动态库.
-
4.设置framework最低支持的版本
-
5.TARGETS —> Build Phases 将需要呈现给来的头文件,直接从Project拖到Public中. 不想呈现出来的.h文件不建议拖到Private中. 放在project中即可
制作framework时OC与Swift混编
- 在framework中不支持使用桥接文件!
- Swift调用OC,非framework编程中原来的bridge.h中即为swift需要使用的所有OC类,为了让Swift文件访问Objective C文件,我们应该在umbrella header,也就是 (framwork名称.h)中,暴露所需要的header。
- OC调用Swift,这里需要注意两点
1.Swift文件的写法,需要写为开放类和方法,否则无法被OC调用,这里还是和App中有些区别的
open class InvitationConfig: NSObject {
@objc static public var share: InvitationConfig {
struct Static {
static let sharedInstance = InvitationConfig()
}
return Static.sharedInstance;
}
@objc public func config() {
}
}
2.引入Swift头文件
#import <HBInvitationSDK/HBInvitationSDK-Swift.h>
- 编译commond + r 需要编译成功否则无法继续制作
将模拟器framework与真机framework合并
-
1.在进行编译之前应该设置为release模式
-
2.真机和模拟器模拟器分别运行一次
内部分为Debug版本和Release版本,同时两者有分为真机版本和模拟器版本framework(iphoneos后缀代表真机版本,iphonesimulator后缀代表模拟器)
-
3.(1)真机版本和模拟器版本framework合并 (1).查看架构信息 打开终端使用命令行 lipo -info 查看framework架构信息
真机版本
模拟器版本
合并真机模拟器版本
(2).因为以上获取的framework只能在对应的版本上运行(即真机只能在设备上运行模拟器版本只能在模拟器上面运行使用)所以需要合并为通用版本
命令行语句:sudo lipo -create (此处请填写真机AppVest文件路径) (此处填写模拟器AppVest文件路径) -output 自定义合成文件存储路径(合成文件的名字AppVest)
根据以上命令就在相应位置生成了新的AppVest文件,然后把这个新生成的文件拷贝到相应的framework中进行AppVest文件替换
(3).查看替换后的framework支持全部真机模拟器架构
使用
-
制作好的framework集成使用 把制作好的framework拖入到工程中,引用相关头文件,然后初始化进行暴露方法调用
#import <HBInvitationSDK/HBinvitationSDK.h>