標籤:
一.framework封裝
1、建立iOS->Framework & Library->Cocoa Touch Framework
2、在PROJECT->Deployment Target->iOS Deployment Target選擇你需要支援的最低系統。
同樣的操作在TARGETS中,Deployment Info->Deployment Target
3、動態庫可以分開發布,在運行時尋找並存入記憶體,但蘋果只允許他自己用,到iOS8以後才開放給開發人員。因此,我需要將Dynamic Framework更換為Static Library靜態模式。設定路徑為Build Settings->Linking->Mach-O Type->Static Library
4、這樣打包的framework依然有問題,如果你用了Category,別人在用你的framework時會發生崩潰。這時別人在引用時需要在工程中other linker flags中添加-objC如果依然有問題,再添加-all_load。
5、終於編譯成功,但發現很多關於符號表的警告,這時需要將Generate Debug Symbols設定為NO即可關閉符號表警告。
6、但是我需要支援bitcode,以上設定後並不能使framework支援bitcode,因此還需要進行額外的設定一個命令讓其支援bit code。在TAGETS的Build setting中搜尋Other C Flags,添加命令“-fembed-bitcode”。同樣的設定在PROJECT中。如果不進行以上操作。別人在整合你的framework時可以編譯,亦可以真機測試。唯獨在打包時會發出警告並打包失敗。警告為framework不支援bitcode!
7、無論SDK還是Framework都需要暴露公用的標頭檔以供使用者讀取和。在TARGETS->Build Phases->Headers裡面,有三種類別。Public(公用的),這裡存放供其他人查看的header。Private(私人的)這裡存放私人的Header,以上兩個Headers存放位置都會暴露出來,所有人可以查看。有些Header是不想給別人看到的。這種header放在第三個類Project中。
8、打包。Edit Scheme->Build Configuration->選為Release然後Run即可.
二.a封裝製作 .a
1、建立項目-> 選擇 “Cocoa Touch Static Library”
2、選擇需要暴露出來的 .h 檔案, .m 檔案會自動編譯到 .a 檔案中,把需要暴露的標頭檔添加到public下
選擇真機裝置,然後 Command+B 編譯, sdk.a 檔案從紅色變為黑色
選擇模擬器,依然 Command+B ,模擬器和真機環境下用的 .a 檔案是分開的
右擊 “Show In Finder” ,查看製作好的 .a 檔案
Debug-iphoneos 檔案夾裡面的東西是用在真機上的
Debug-iphonesimulator 檔案夾裡面的東西是用在模擬器上的
如果 Scheme 是 Release 模式,產生的檔案夾就以 Release 開頭
如果想讓一個 .a 檔案能同時用在真機和模擬器上,需要進行合并
在終端輸入指令
lipo -create Debug-iphoneos/真機路徑/sdk.a Debug-iphonesimulator/模擬器路徑/sdk.a -output 案頭/自己弄過路徑/sdk.a
通過 lipo –info sdk.a 可以查看 .a 的類型(模擬器還是真機)
iOS SDK封裝