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

2021-07-23 10:26:49 字數 888 閱讀 7439

如果我們打包靜態庫肯定會有這樣的需求:就是你打包乙個庫既能在真機上使用,也可以在模擬器上使用,怎麼來打包生成乙個通用的靜態庫呢?

其實也不難,首先,你得先通過真機打包生成真機可以用的靜態庫(這個庫可以在真機上使用,但在模擬器上執行的時候就會報錯),接著,需要通過模擬器生成乙個靜態庫(這個庫是可以在模擬器上執行,但是在真機上執行就會報錯),兩個庫生成完成之後,就是今天我們需要做的事了。

lipo -create yao/ios/iphoneos/libzib.a yao/ios/iphonesimulator/libzib.a  -output yao/ios/libzib.a

其中yao/ios/iphoneos/libzib.a //

為真機庫。 (iphoneos意思為真機)

yao/ios/iphonesimulator/libzib.a //

為模擬器庫 (iphonesimulator為模擬器)

-output yao/ios/libzib.a //

為兩個合併後存放的路徑(這個就是生成的通用庫,名字為libzib.a).

然後可以輸入命令測試下是否成功

lipo -info yao/ios/libzib.a //

下面是輸出 armv7 i386 有了兩個就表情模擬器和真機都支援 其中armv7為真機架構 i386為模擬器

architectures in the fat file: yao/ios/libzib.a are: armv7 i386

其實那兩個路徑應該怎麼找呢?我們可以開啟命令視窗,然後把模擬器庫拖到這個黑視窗中就會生成路徑,同理生成真機庫的路徑即可。(小技巧分享)

如果你沒打過庫,可以看我這篇部落格,是乙個打包庫**教程,怎麼打庫?打庫注意事項的鏈結部落格

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

1.利用lipo命令來合併模擬器和真機庫 用模擬器編譯生成的靜態庫是i386架構的,而ios是arm6 arm7 arm7s架構的,架構不相容,所以用模擬器編譯的靜態庫在真機上不能用。要使靜態庫編譯出來,模擬器和真機都可以使用的,可以分別編譯生成lib a,然後用lipo來合併這兩個lib a 如下...

IOS 製作真機和模擬器均可使用的靜態庫

可以到以下 檢視具體的製作過程 我這裡總結如下 1 首先生成模擬器下地.a靜態庫,通過命令lipo info libtest.a 可知其architectures in the fat file libtest.a are i386 x86 64 2 再生成device 真機 環境下地.a靜態庫,通...

symbian模擬器和真機的區別

模擬器是把symbian os核心移植到win32平台,大多數情況下模擬器環境和真機相似,但仍有以下區別,有些足以給開發者帶來不少麻煩。位元組對齊和記憶體限制將著重介紹。1.引導程式 真機上,首先執行乙個引導程式用來在啟動核心之前對一系列硬體初始化。模擬器就不需要進行初始化硬體而是直接啟動核心 執行...