制作framework
操作步驟
-
新建工程選擇iOS —> Cocoa Touch Framework
pod 需要的三方庫
- pod init
- open Podfile 編輯framework依賴的第三方庫
- pod install
- 打開workspace
編輯framework
-
1.添加所需文件
-
2.TARGETS —> Build Settings 中設(shè)置相關(guān)項(xiàng) Build Active Architecture Only 設(shè)置為NO的意思是當(dāng)前打包的.framework支持所有的設(shè)備.否則打包時(shí)只能用當(dāng)前版本的模擬器或真機(jī)運(yùn)行.
3.Build Setting 搜索linking 設(shè)置Dead Code Stripping 為NO是編譯選項(xiàng)優(yōu)化,包瘦身,(可不改) Mach-O Type 選中StaticLibrary (靜態(tài)庫) Xcode默認(rèn)是動(dòng)態(tài)庫.
-
4.設(shè)置framework最低支持的版本
-
5.TARGETS —> Build Phases 將需要呈現(xiàn)給來的頭文件,直接從Project拖到Public中. 不想呈現(xiàn)出來的.h文件不建議拖到Private中. 放在project中即可
制作framework時(shí)OC與Swift混編
- 在framework中不支持使用橋接文件亿笤!
- Swift調(diào)用OC脓豪,非framework編程中原來的bridge.h中即為swift需要使用的所有OC類滨砍,為了讓Swift文件訪問Objective C文件蒲每,我們應(yīng)該在umbrella header纷跛,也就是 (framwork名稱.h)中,暴露所需要的header邀杏。
- OC調(diào)用Swift贫奠,這里需要注意兩點(diǎn)
1.Swift文件的寫法,需要寫為開放類和方法望蜡,否則無法被OC調(diào)用唤崭,這里還是和App中有些區(qū)別的
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 需要編譯成功否則無法繼續(xù)制作
將模擬器framework與真機(jī)framework合并
-
1.在進(jìn)行編譯之前應(yīng)該設(shè)置為release模式
-
2.真機(jī)和模擬器模擬器分別運(yùn)行一次
內(nèi)部分為Debug版本和Release版本,同時(shí)兩者有分為真機(jī)版本和模擬器版本framework(iphoneos后綴代表真機(jī)版本脖律,iphonesimulator后綴代表模擬器)
-
3.(1)真機(jī)版本和模擬器版本framework合并 (1).查看架構(gòu)信息 打開終端使用命令行 lipo -info 查看framework架構(gòu)信息
真機(jī)版本
模擬器版本
合并真機(jī)模擬器版本
(2).因?yàn)橐陨汐@取的framework只能在對(duì)應(yīng)的版本上運(yùn)行(即真機(jī)只能在設(shè)備上運(yùn)行模擬器版本只能在模擬器上面運(yùn)行使用)所以需要合并為通用版本
命令行語句:sudo lipo -create (此處請(qǐng)?zhí)顚懻鏅C(jī)AppVest文件路徑) (此處填寫模擬器AppVest文件路徑) -output 自定義合成文件存儲(chǔ)路徑(合成文件的名字AppVest)
根據(jù)以上命令就在相應(yīng)位置生成了新的AppVest文件谢肾,然后把這個(gè)新生成的文件拷貝到相應(yīng)的framework中進(jìn)行AppVest文件替換
(3).查看替換后的framework支持全部真機(jī)模擬器架構(gòu)
使用
-
制作好的framework集成使用 把制作好的framework拖入到工程中,引用相關(guān)頭文件小泉,然后初始化進(jìn)行暴露方法調(diào)用
#import <HBInvitationSDK/HBinvitationSDK.h>