標籤:手機 令行 cts lin 需求 關閉 bug each mach-o
查看.a靜態庫的產生及使用單擊此處
註:這篇教程將只使用一小部分Objective-C代碼,本文主要講解從開始到應用的詳細步驟。
環境:xcode 9.2
下面我們開始操作:
第一步:建立一個靜態庫工程
開啟Xcode,選擇建立一個項目,建立Cocoa Touch Framework。名稱看自己需求起名,我直接叫MYSDK。
建立完成後已經有一個.h檔案MMYSDK.h和Info.plist檔案,如果想要新實現方法封裝成SDK可以直接建立類在裡面實現,也可以將自己已經實現功能的類添加到工程裡面。(這裡只是寫產生.framework靜態庫的步驟,所以直接拖入以前寫好的類,擷取裝置的IP地址,.m裡面具體的擷取方法就不往出來發了,如果有需要直接存取iOS常用系統資訊擷取方法中的IP擷取部分)
第二步:修改SDK工程配置
2.1、在TARGETS -> Build Setting中設定Build Active Architecture Only下的Debug對應值為NO。
2.2、在TARGETS -> Build Setting中設定Mach-O Type的對應值為靜態庫Static Library。
2.3、在TARGETS -> Build Setting中設定Dead Code Stripping的對應值為NO。(大致意思是如果開啟此項就會對代碼中的”dead”、”unreachable”的代碼過濾,不過這個開關是否關閉,似乎沒有多大影響,不過為了完整還原framework中的代碼,將此項關閉也未曾不可)
2.4、在TARGETS -> Build Setting中設定Link With Standard Libraries的對應值為NO,避免重複的連結。
2.4、在TARGETS -> Build Phases中將需要變成可見的標頭檔移動到public下。
2.5、將裡面有可直接調用方法的標頭檔添加到MYSDK.h中。
第三步:產生.framework靜態庫
靜態庫分為手機和模擬器兩種(手機端的只有手機能調用,模擬器的只有模擬器能調用)
3.1、產生模擬器使用靜態庫,隨意選擇一個模擬器,然後編譯工程(快速鍵command + B)。這時候已經產生只在模擬器能用的.a靜態庫MYSDK.framework。
3.2、同樣的道理選擇Generic iOS Device產生真機能用的.a靜態庫。
右鍵MYSDK.framework,選擇Show in Finder 在Products檔案夾下有兩個檔案夾Debug-iphoneos和Debug-iphonesimulator,分別是真機和模擬器對應的靜態庫。
第四步:合成通用.a靜態庫
將真機和模擬器MYSDK.framework裡面的MYSDK靜態庫合并成一個通用的靜態庫,在終端完成。使用命令列:lipo -create 真機MYSDK靜態庫路徑 模擬器MYSDK靜態庫路徑 -output 合成靜態庫路徑 (直接拖拽MYSDK檔案路徑就可出現在終端)。
至此,最終的合成庫已經產生在Debug-iphoneos檔案夾下,用新產生的MYSDK替換MYSDK.framework下的MYSDK。MYSDK.framework就是我們最終要使用的靜態庫。可以直接使用了。
第五步:.framework靜態庫的使用
5.1、隨意建立一個工程,將合成的.framework靜態庫添加到工程(這裡只是說明靜態庫的使用,請忽略工程目錄結構)。然後在ViewController裡面匯入標頭檔調用靜態庫裡面的方法
5.2、分別在模擬器和手機端運行(iPhone X模擬器和iPhone 6S手機),結果如下(請忽略頁面配置,只是為了展示結果)。
至此,大功告成。
iOS SDK開發之 .framework靜態庫