改造動態framework為靜態framework
公司產品之前使用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會找不到庫。
(圖片已刪除,避免誤導大家)
(經驗證,這種修改庫名稱的方法不可行...)
相關文章
- iOS 靜態庫(.a, .framework) 動態庫(.framework, dylib)iOSFramework
- Xcode 6製作動態及靜態FrameworkXCodeFramework
- iOS的Framework靜態庫iOSFramework
- iOS中的動態庫,靜態庫和framework介紹iOSFramework
- iOS - 靜態庫.a 和 framework 詳解iOSFramework
- 熱更新--動態載入frameworkFramework
- ABAP程式碼靜態分析工具SQF - Support Query FrameworkFramework
- 理解alivc_framework狀態機Framework
- 偽靜態、靜態和動態的區別
- Linux 依賴動態庫 / 靜態庫的動態態庫 / 靜態庫Linux
- Django REST framework API 指南(25):狀態碼DjangoRESTFrameworkAPI
- iOS使用指令碼跟隨工程程式碼動態生成FrameworkiOS指令碼Framework
- presto 轉換靜態catlog為動態catlogREST
- 靜態代理和動態代理
- 靜態路由和動態路由路由
- oracle 監聽 靜態 動態Oracle
- 靜態庫與動態庫
- JAVA 靜態代理 & 動態代理Java
- 動靜態庫
- 【framework】framework中為systemserver新增許可權FrameworkServer
- [Android Framework]獲取U盤 SD 狀態AndroidFramework
- DEDE整站動態/靜態轉換
- ios靜態庫和動態庫iOS
- java靜態代理和動態代理Java
- 動態引數,靜態引數
- BootStrap的動態模態框及靜態模態框boot
- echarts之靜態與動態地圖Echarts地圖
- 機器學習的靜態特徵和動態特徵機器學習特徵
- cmake:生成靜態庫和動態庫
- AOP之靜態代理VS動態代理
- 動態註冊和靜態註冊
- 動態監聽與靜態監聽
- 靜態註冊和動態註冊
- 動態監聽和靜態監聽
- oracle listener 靜態和動態註冊Oracle
- oracle動態和靜態監聽listenerOracle
- 靜態合批和動態合批
- 將動態aspx頁面,儲存為靜態htm檔案 (轉)