ios - dyld library not loaded




設備上的iOS應用程序崩潰,dyld:Library未加載,Xcode 6 Beta (12)

這次崩潰是一個阻塞問題,基本上我使用以下步驟來重現問題:

  • 創建一個Cocoa Touch框架項目
  • 添加一個swift文件和一個類Dog
  • 為設備構建框架
  • 在Swift中創建一個單一視圖應用程序
  • 將框架導入應用程序項目
  • 在ViewController框架中實例化swift類
  • 在設備上構建並運行應用程序

該應用立即崩潰啟動時,這裡是控制台日誌:

dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03
  Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App
  Reason: image not found

我試圖在iOS 7.1和8.0設備上構建,它們都具有相同的崩潰。 不過,我可以構建應用程序並在模擬器上運行。 另外我知道我可以將框架從“ 必需”更改為“ 可選” ,但它並未完全解決問題,應用程序在創建Dog實例時崩潰。 在設備和模擬器上的行為是不同的,我懷疑我們不能使用Xcode的beta版本為設備分發框架。 任何人都可以闡明這一點嗎?


對於iOS大於或等於8

在目標的常規選項卡下,在嵌入式二進製文件部分添加框架。 這會將框架複製到編譯過程中,以便在運行時鏈接到框架。

這是為什麼發生? 因為你鏈接的框架被編譯為一個動態鏈接的框架,因此在運行時被鏈接。

注意:嵌入自定義框架僅在iOS> 8中受支持,因此可以在較早版本的iOS上使用替代解決方案。

對於iOS少於8

如果你對這個框架有影響(可以訪問源代碼/構建過程),你可以將這個框架改為靜態鏈接而不是動態鏈接。 這將導致代碼被包含在編譯的應用程序中,而不是鏈接到運行時,因此框架不必被嵌入。

如何:在框架的構建設置選項卡的鏈接部分中,將Mach-O類型更改為靜態庫。 您現在不需要在嵌入式二進製文件中包含框架。

包括資產:為了包括圖像,音頻或xib / nib文件等內容,我建議創建一個包(本質上是一個目錄,更多信息請參閱bit.ly/ios_bundle),然後使用NSBundle從包中加載資源。


  1. 轉到xcode中的文件 - >工作區設置
  2. 單擊出現/ Users / apple / Library / Developer / Xcode / DerivedData旁邊的箭頭
  3. 選擇派生數據並將其移至廢紙簍。
  4. 很好的Xcode並重新打開它。
  5. 清理項目並再次運行。

上述步驟解決了我的問題。


在嵌入式二進製文件中添加該框架

然後清理並建立。


在我的情況下,解決方案是從嵌入式二進製文件中刪除編譯後的框架,這是工作區中的一個獨立項目,清理並重建它,最後重新添加到嵌入式二進製文件中。



如果您使用的是第三方框架,並使用Cocoapods作為依賴關係管理器,請嘗試執行pod install來刷新您的pod。

這個崩潰發生在我正在使用的第三方庫上,所以很高興上面的解決方案為我工作,希望它適合你!


對於那些修復程序無法正常工作的人,請嘗試將操作系統更新到Yosemite。 它為我工作!



我嘗試將我創建的框架手動添加到我的項目中時收到了同樣的錯誤。 只是將框架拖入您的項目並不夠好。 這就像是在同一個球場,但無法找到你的孩子。 我花了一些嘗試和錯誤才使它正常工作,但按照這些步驟為我做了。

1)創建你的框架

  • 開發你的框架。
  • 一旦你的開發完成, COMMAND + B構建你的框架並確保你獲得“構建成功”。

2)訪問你的框架

  • 一旦你的框架項目成功建立,它就會準備好讓你訪問你的項目中的Products文件夾。

  • 右鍵單擊您的.framework並選擇“在Finder中顯示”。

3)將框架放置在您的項目中

  • .framework從Finder窗口拖放到應用程序項目的“Framework”文件夾中。

4)為框架配置應用程序項目

  • 在您的項目中選擇最高級別

  • 選擇你的目標

  • 轉到“構建階段”,然後“與庫鏈接二進製文件”,並確保您的框架包含在可選的選項中

  • 仍然在“構建階段”中,轉到左上角並選擇+按鈕。 在下拉菜單中選擇“新建複製文件階段”。

  • 向下滾動到新的“複製文件”部分,並確保您將Destination設置為“框架”。 保持子路徑為空。 然後點擊左下角的+按鈕。

  • 您將看到您的項目層次結構。 向下滾動到您在步驟3中添加框架的“框架”文件夾,或者在頂部的搜索欄中搜索它。 選擇你的框架,然後點擊“添加”。

  • 確保您的框架包含在“代碼簽名複製”中。

5)清理,然後運行你的項目

  • COMMAND + SHIFT + K
  • COMMAND + R

我在iOS 9.x版本中遇到了同樣的問題

ISSUE IS: App crashes as soon as I open the app with below error.

dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Referenced from: /var/containers/Bundle/Application/######/TestApp.app/TestApp Reason: image not found

我通過將Linked Frameworks and Libraries for UserNotifications.framework框架中的Required更改為Optional來解決了此問題。


我的環境:Cocos2d 2.0,Box2d,Objective C

除了做上面的其他答案,我終於去了常規選項卡,並使WatchKit可選。


我遇到過同樣的問題。 我嘗試用​​我以前從未使用過的iPhone構建我的項目,但我沒有添加新的框架。 對我來說,清理工作正常( Shift + Command + K )。 也許這是因為我使用Xcode 7的beta 5和iOS 9 Beta的iPhone 6,但它工作。





xcode6