改造動態framework為靜態framework

嘟嘟在發表於2015-06-22

 

公司產品之前使用xmpp作為底層庫,之前同事編譯自己的sdk靜態庫想生成.a庫,但是各種編譯問題(其實耐心修改配置都能解決),但是從百度找到方案用framework可以解決,所以最終使用的是framework,後來才發現,xcode6已經不想xcode5那樣預設生成的就是靜態framework,而是可以選擇生成動態framework,而悲劇的是開啟我們sdk的工程配置一看: dynamic library ! 悲劇的的起因就是app store不允許第三方的動態framework,所以為了客戶的app上線,我們必須首先把當前的靜態framework改為動態:

 

 

這樣建立好的工程預設就是動態framework,如果將這樣生成的庫直接link到別的應用中使用,會報錯“image not found dyld: Library not loaded:”,這個錯誤需要embedded binary library,把這個庫再嵌入到工程才可以解決,如果是靜態庫則不需要,也不會出現這個問題。

 

下面開始簡單配置幾個改變編譯屬性(有的在動態庫模式下已經配置好):

首先要確保修改 可執行檔案 型別mach-o type為靜態庫

 



然後要修改此sdk(framework)支援的手機架構,注意為了支援多個版本需要保證armv7s的支援
然後配置生成的framework的位置,這裡可能是xcode一個bug,如果建立檔案時是真機編譯的庫,那麼生成的庫就在release-iphoneos路徑下,工程編譯後framework也是黑色的,也就是表示已經生成,但是改為模擬器後雖然編譯成功,但framework會顯示紅色,也就是找不到,這時去對應路徑找其實已經生成:


下圖是配置工程輸出的庫的名稱,注意生成的framework已經無法修改名稱,只能在這時修改,否則會link會找不到庫。
(圖片已刪除,避免誤導大家)
經驗證,這種修改庫名稱的方法不可行...

相關文章