iOS-靜態庫,動態庫,framework淺析(二)

來源:互聯網
上載者:User

標籤:iphone5   develop   strong   xcode   gem   -objc   通用   多次   編譯配置   

建立.a靜態庫

第一步,建立工程。
     一般使用工程名就使用庫的名稱,比如我這裡用FMDB來建立靜態庫,我的工程名就取名為FMDB,建立的.a靜態庫就是libFMDB.a。

                    
使用靜態庫模板建立工程.png
建立的工程.png

第二步,刪除系統預設建立的【FMDB.h】和【FMDB.m】檔案,匯入需要打包的源檔案。


匯入源檔案後.png


第三步(方式一),修改項目配置


修改配置.png

點擊中的【3】,彈出的列表中選擇【New Headers Phase】,開啟【Headers (0 items)】,點擊左下角的【+】,選擇所有的.h檔案。


配置需要暴漏的檔案的.h頭.png

第三步(方式二),修改項目配置


修改項目配置.png

第四步,修改匯出product配置


修改編譯配置.png

第五步,修改編譯指令集


設定Release為NO.png

模擬器:iPhone4s~5 : i386 iPhone5s~6plus : x86_64
真機:iPhone3gs~4s : armv7 iPhone5~5c : armv7s iPhone5s~6plus : arm64
如果第五步這裡,設定為YES,那麼編譯出來的.a靜態庫就只包含當前裝置的指令集。
舉個例子:如果我們選擇iPhone 5模擬器【Command+B】編譯,則編譯出來的.a靜態庫只能用iPhone4s~5模擬器跑程式,用iPhone5s~6plus,則會報找不到x86_64的libFMDB庫。
設定為NO,則會把所有指令集的都打包合并。

第六步,編譯(快速鍵【Command+B】

    編譯時間,需要用模擬器和真機各編譯一次,這樣Products目錄下的libFMDB.a靜態庫才會變為黑色,右鍵show in Finder,可以進入Products目錄下。


編譯結果.png

為什麼需要用模擬器和真機各編譯一次呢?
     可以看到Products目錄下有【Release-iphoneos】和【Release-iphonesimulator】兩個檔案件。前者裡面是真機使用的.a靜態庫,後者是模擬器使用的.a靜態庫。

注意:如果步驟四中,不將Build Configuration改為Release,則打包出來的靜態庫會存於【Debug-iphoneos】和【Debug-iphonesimulator】兩個檔案夾下。
我們一般都使用Release模式,因為程式最終發布之後是Release版的,所以靜態庫也是在Release模式下使用。

如果想要通用需要將模擬器使用的靜態庫與真機使用的靜態庫合并成一個靜態庫,可以使用終端命令來實現。命令格式:

lipo -create 第一個.a檔案的絕對路徑 第二個.a檔案的絕對路徑 -output 最終的.a檔案路徑。

本文中使用的命令如下:

lipo -create /Users/harvey/Library/Developer/Xcode/DerivedData/FMDB-ctegiztcjikewoeprxxtmryzetfa/Build/
Products/Release-iphoneos/libFMDB.a
             /Users/harvey/Library/Developer/Xcode/DerivedData/FMDB-ctegiztcjikewoeprxxtmryzetfa/Build/
Products/Release-iphonesimulator/libFMDB.a
-output      /Users/harvey/Desktop/libFMDB.a

補充
    經過多次實踐,第三步的操作省略,依然可以匯出可正常使用的包。
如果靜態庫中有category類,則在使用靜態庫的項目配置中【Other Linker Flags】需要添加參數【-ObjC]或者【-all_load】。

iOS-靜態庫,動態庫,framework淺析(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.