關於dyld: Library not loaded

在接入智凡迪的sdk過程當中,遇到如下問題:app

dyld: Library not loaded: @rpath/SDKFramework.framework/SDKFrameworkui

  Referenced from: /private/var/mobile/Containers/Bundle/Application/107B34E6-F250-4511-9FA9-31526F8E7B84/TestSDKUI.app/TestSDKUIspa

  Reason: image not foundblog

智凡迪使用了iOS8中的自定義動態包。在build setting的link library導入SDKFramework.framework後,沒法讀取framework中的圖片資源。圖片

之前iOS上用的framework,實際上都是static library打包成framework結構,圖片資源打包爲bundle。直接在工程中導入framework和bundle資源便可。然而動態包直接將圖片資源編譯打包進framework,須要在導入的工程中作配置。內存

1.網上有一種辦法是講導入的framework設置爲optional。ci

這裏說明一下required和optional的區別:資源

強引用(Required)的framework是必定會被加載到內存的,可是弱引用(Optional)的framework只在須要時纔會被載入內存,這對於比較大的framework來講,在最初加載的時候會省不少時間。例如,有一些庫如Social.framework 和 AdSupport.framework,是在iOS6以後才被引入的,還有一些更新了新特性的只能在iOS6+上可用。當你添加一個framework到你的工程裏,他們被默認強引用(Required),然而,當你最終把程序配置在運行5.0的設備上時,你會發現它通不過最戶的加載,緣由就在於這些庫是不被iOS5.0支持的,就須要咱們把這些庫的引用改成Optional.get

可是這裏即使設置爲optional,仍是會報這個錯,代表並不是由於加載多餘,而是真的沒有加載進來。io


2.這裏若是要正確加載,須要兩處設置:

-將包含圖片的framework加載到bundle resource

-在build setting界面:target-〉Build Phases -〉左上角+號 -〉New Copy Files Phase 而後在Copy Files下 Destination選擇Frameworks -〉添加動態庫

這個操做彷佛是要求運行時將動態庫copy加載到framework當中,供app運行使用(存疑)。

相關文章
相關標籤/搜索