合併模擬器和真機庫,生成乙個通用的靜態庫

2021-06-18 11:34:13 字數 1838 閱讀 5873

1. 利用lipo命令來合併模擬器和真機庫:

用模擬器編譯生成的靜態庫是i386架構的,而ios是arm6/arm7/arm7s架構的,架構不相容,所以用模擬器編譯的靜態庫在真機上不能用。

要使靜態庫編譯出來,模擬器和真機都可以使用的,可以分別編譯生成lib***.a,然後用lipo來合併這兩個lib***.a

如下:開啟終端,cd到build目錄,然後使用lipo命令如下:

lipo -create release-iphoneos/lib***.a release-iphonesimulator/lib***.a -output lib***.a

將合併生成乙個通用的lib***.a

lipo -info命令用來檢視靜態庫的型別

lipo -info release-iphoneos/lib***.a

lipo -info release-iphonesimulator/lib***.a

2. 利用指令碼直接生成通用的靜態庫:

建立aggregate:

在靜態庫工程裡新建乙個target(file/new/target), 在彈出的框中在左邊選擇ios下面的other, 然後在右邊選擇aggregate:

建立好aggregate之後,在target下面選擇剛剛建立的aggredate, 然後選擇"editor/add build phase/add run script build phase"

然後在run script下面新增以下指令碼:

最後編譯,編譯成功會在build目錄下面出現debug-universal目錄,該目錄裡面生成的lib***.a就是合併的靜態庫。

建立乙個真機和模擬器通用的framework

建立乙個真機和模擬器通用的framework 首先用finder找到framework所在的位置 然後找到framework中的檔案,例如這裡的 kalagame library,並且紀錄其路徑 os frame path 同樣方法開啟另乙個資料夾,紀錄其中庫的路徑,simulator frame ...

通用靜態庫的生成(模擬器和真機通用)

如果我們打包靜態庫肯定會有這樣的需求 就是你打包乙個庫既能在真機上使用,也可以在模擬器上使用,怎麼來打包生成乙個通用的靜態庫呢?其實也不難,首先,你得先通過真機打包生成真機可以用的靜態庫 這個庫可以在真機上使用,但在模擬器上執行的時候就會報錯 接著,需要通過模擬器生成乙個靜態庫 這個庫是可以在模擬器...

lipo合併iPhone模擬器和真機的靜態類庫

用xcode寫過lib的tx都應該試過,simulator和device 編譯出來的lib不能通用,即跑simulator需要simulator的庫,跑device需要device的庫,這是個很麻煩的問題,特別是xcode很智慧型地把lib的路徑新增到lib search path中的時候。舉個例子...