iOS靜態庫的編譯

來源:互聯網
上載者:User

在做第三方的SDK的時候常會把自己的類編譯成靜態庫,在提供給開發人員使用的是好就能隱藏自己的私密資訊,如私人API、APIKey等;


此處將開源的JSONKit類庫編譯成靜態庫,然後再使用我們編譯好的靜態庫來來解析一個json檔案


1.建立靜態庫工程,選擇Framework & Library --》next ,命名JSONKitLib

2.刪除自動產生的JSONKitLib.h和JSONKitLib.h(因為是打包別人的類,不需要這兩個檔案,如果是自己製作就沒必要刪除了),在https://github.com/johnezang/JSONKit下載JSONKit,將JSONKit.h和JSONKit.m拷貝到這個工程之中;


3.此處要特別注意的,因為iOS模擬器是基於Mac OS平台X86架構,iOS裝置都是給予ARM架構,所以給他們提供的靜態庫也必須對於他們的架構,幸運的是Xcode可以同時編譯這兩個架構的庫;

編譯的時候調到iOS Device ,  Product  --> Build;  如果調到其他則不能編譯出來靜態庫


4.編譯成功後就會出來libJSONKitLib.a,右鍵選中,show  in finder  ;會有Debug-iphoneos和Debug-iphonesimulator兩個檔案夾下的靜態庫,先讓我們看看用lipo查看一下檔案類型

一個是ARM架構的  一個是x86平台的i386架構的;如果我們要在模擬器上運行測試需要拷貝Debug-iphonesimulator下的靜態庫,如果需要在運行真機或是真機測試就必須是Debug-iphoneos下的靜態庫;


5.現在來測試剛剛編譯的靜態庫,最好將這兩庫都拷貝出來,方便添加使用;建立一個xcode工程,把JSONKit.h檔案添加到建立工程中,然後在把Debug-iphonesimulator下編譯的靜態庫添加進去


6.此處測試代碼測試使用的是國家氣象局api,返回的是json檔案

- (IBAction)TapJsonPaser:(id)sender {    NSError *error;    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.weather.com.cn/data/101180701.html"]];    NSData *repsponse = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];    JSONDecoder *jsonPaser = [[JSONDecoder alloc] init];        NSDictionary *weatherDic = [jsonPaser objectWithData:repsponse error:&error];    NSLog(@"解析結果:%@",weatherDic);    [jsonPaser release];}

結果

但是有人會覺得這個太麻煩,果斷的將這兩個靜態庫打包成一個靜態庫使用命令

lipo -create Debug-iphoneos/libJSONKitLib.a Debug-iphonesimulator/libJSONKitLib.a -output libJSONKitTestLib.a



方法好雖好,但會犧牲空間,檔案會變大,JSONKit源檔案12KB + 177KB,編譯成靜態庫後arm架構的511KB  i386架構的263KB,把它們打包成一個靜態庫是774KB;



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.