環(huán)境:Xcode 8
1.創(chuàng)建framework
2.修改相關(guān)配置
1)設(shè)定SDK適配的iOS系統(tǒng)版本號
2)選擇性添加: armv7s
原因:armv6, armv7, armv7s是ARM CPU的不同指令集柑潦。
armv6設(shè)備:iPhone仰冠, iPhone2瓶逃, iPhone 3G衣洁,第一代磺浙、第二代iPod Touch盈蛮;
armv7設(shè)備:iPhone 3GS舍肠,iPhone 4奕巍,iPhone 4S侦讨,iPad 驶冒,iPad 2,iPod Touch 3G韵卤,iPod Touch 4骗污;
armv7s設(shè)備:iPhone 5,iPad4沈条;
arm64設(shè)備:iPhone 5S需忿,iPad Air,iphone6蜡歹,iphone6plus屋厘,iPhone6s,iPhone6s Plus月而,iPhone7汗洒,iPhone7 Plus等;
Xcode6更新后父款,默認不支持armv7s溢谤,如果你提供的Framework默認不支持armv7s架構(gòu),但是使用者要支持armv7s架構(gòu)铛漓,這時就會有沖突溯香,所以需要你選擇性是否支持armv7s
3)"Build Active Architecture Only" 設(shè)置為 "NO"
設(shè)置為NO的時候,會編譯支持的所有的版本設(shè)置為YES的時候浓恶,是為Debug的時候速度更快玫坛,它只編譯當前的architecture 版本
4)"Mach-O Type" 設(shè)置為 "Static Library"
framework可以是動態(tài)庫也可以是靜態(tài)庫,對于系統(tǒng)的framework是動態(tài)庫包晰,而用戶制作的framework只能是靜態(tài)庫湿镀。
在Xcode7及以上版本中 Dead Code Stripping、Link with Standard Libraries不再需要設(shè)置成NO
5)根據(jù)SDK功能需要伐憾,來決定是否保留原頭文件勉痴,個人習(xí)慣刪掉重新創(chuàng)建一個繼承自NSObject的文件
將自己創(chuàng)建的需要開放的文件拖入到 *Public* 中
6)分別在模擬器和真機環(huán)境下編譯SDK,在Products文件夾下選中打出來的包树肃,show in finder 蒸矛,回退一個目錄,即可看到兩個文件夾(Debug或Release模式自選)
7)使用終端合并SDK
命令行語句:sudo lipo -create 真機SDKTest文件路徑(步驟6中的圈起來的文件)
模擬器SDKTest -output 自定義合成文件存儲路徑(合成文件的名字SDKTest)
注:framework相關(guān)問題
1. XXXXX is not an object file (not allowed in a library)
2.SDK中使用了第三方框架問題