ios - tutorial - dyld:庫未加載:@ rpath/libswiftCore.dylib




xcode document (20)

Xcode 7.2,iOS 9.2在一個設備上,其他9.0。 兩者都有錯誤。 不知道是什麼改變了它,但是WWDR的上述解決方案對我來說是正確的。 安裝該證書和問題解決。

https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846

我正在嘗試在iPhone 4上運行Swift應用程序。 它可以在模擬器上正常工作,我的朋友可以在他的iPhone 4s上成功運行它。 我有iOS 8和Xcode 6的正式版本。

我努力了

  • 重新啟動Xcode,iPhone,電腦
  • 清潔和重建
  • 撤銷並創建新的證書/配置文件
  • 運行路徑搜索路徑是$(inherited) @executable_path/Frameworks
  • 嵌入式內容包含Swift代碼是'是'
  • 代碼簽名身份是開發人員

以下是整體錯誤

dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib

上述解決方案對我無效。 我通過以下步驟解決了該問題:

  1. 我必須去電話(設置>配置文件)並刪除手機中的配置文件(包括與這些配置文件/配置相關的所有應用程序)。
  2. 之後,請確保您在xcode中下載蘋果規定。 轉到xcode設置>帳戶並登錄到您的Apple開發者帳戶。

在Xcode 8中, Embedded Content Contains Swift Code選項的選項不再可用。

它已被重命名為"Always Embed Swift Standard Libraries = YES"


在嘗試完所有事情之後,我終於發現,構建似乎並不總是一再包含每一個細節。 也許是為了加快這個過程......為了確保在設備上運行之前進行整體打包,請首先進行Clean:Shift-Cmd-K。 然後用:Cmd-B構建。 之後,在設備上運行它。 簡單。 親切的問候你在那個地方所有的好人!


對我而言,以前的解決方案都沒有奏效。 我們發現Build Settings中有一個“Always Embed Swift Standard Libraries”標誌需要設置為YES。 這是默認的NO!

Build Settings > Always Embed Swift Standard Libraries

設置完成後,在再次構建之前清理項目。

敏銳的讀者一些解釋最重要的部分是:

請在您的應用中將嵌入式內容包含Swift代碼(EMBEDDED_CONTENT_CONTAINS_SWIFT)構建設置設置為YES,如圖2所示。此構建設置指定目標產品是否包含嵌入Swift代碼的內容,它告訴Xcode將Swift標準庫嵌入到您的應用中當設置為YES時。

該標誌以前稱為Embedded Content Contains Swift Code


對於我來說,嘗試一切都沒有成功,有效的方法是從Packaging section刪除@executable_path/Frameworks (不知道它是如何進入的)


就我而言,

我已經設置了@executable_path/Frameworks

但我還必須設置“框架搜索路徑”

$(PROJECT_DIR)/Frameworks

recursive更改

這對我有用。


就我而言,我的一個測試目標正在工作,但另一個則沒有。 這是給一個缺少的庫或其他任何上述錯誤。 我比較了兩個測試目標的設置,發現其中一個缺少“測試主機”的配置,所以我從工作測試目標複製了它,並修復了我的破壞測試目標!



從以下位置更改目標的複制副本資源

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"

至:

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"

我使用Xcode 7.2。 如果您嘗試了上述所有操作並且錯誤仍然存在,請嘗試從Keychain Access刪除舊證書! 終於解決這個問題真是太痛苦了。


我使用Xcode 8.3.3和Xcode 9.2。 對我來說,解決方案是使用Xcode Select將我的默認Xcode從8切換到9:

$ xcode-select --print-path

$ sudo xcode-select -switch /Applications/Xcode-9.2.app

編輯:其實似乎在這裡幫助的是,Xcode 9.2使用從Xcode 8.3.3派生的數據。 這不是一個解決方案,但至少可以讓我繼續工作。


我在刪除時開始出現此錯誤:

@executable_path/Frameworks

來自我的構建設置中的Runpath Search Paths 。 替換它再次固定一切(感謝善良的源代碼控制!)

我不知道它是如何到達那裡的,但似乎需要一個二進製文件來找到它的嵌入式Swift運行時。


我在運行我的Swift測試時遇到了這個問題(但不是我的應用程序)。 事實證明,測試需要在其Runpath Search Paths構建設置中包含超過@executable_path/Frameworks的測試目標。 將運行路徑搜索路徑設置為以下對我來說很有幫助:

$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks

我認為這是一個直接從Xcode生成證書的錯誤。 要解決(至少在Xcode 6.1 / 6A1052d中):

  1. 請前往管理證書的Apple Developer網站: https://developer.apple.com/account/ios/certificate/certificateList.actionhttps://developer.apple.com/account/ios/certificate/certificateList.action
  2. 選擇你的證書(應該在“狀態”下顯示“由Xcode管理”)和“撤銷”它
  3. 請按照此處的說明手動生成新證書: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW32 : https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW32
  4. 轉至Xcode>首選項>帳戶> [您的Apple ID]>雙擊您的團隊名稱>點擊刷新按鈕以更新證書和配置文件

我通過刪除派生數據解決了問題,並且這次它正常工作。 試用Xcode 7.3.1GM


沒有解決方案為我工作。 重新啟動手機將其固定。 奇怪,但它的工作。


當Xcode要求您重置證書時,請重置它。 而且該應用程序可以在實際設備上運行,而不會因該錯誤消息而崩潰。 一旦這個問題在一個快速項目中得到解決。 其他具有此問題的快捷項目也是固定的。

我一直在為這些工作半天掙扎,我發現在配置門戶中一次又一次重置證書並不會有幫助。


要添加到企業分發證書解決方案:您可以打開鑰匙串並檢查證書。 如果有任何紅色文字說明信任鏈不能被驗證或被撤銷,它將無法工作! 在我的計算機上,即使門戶網站顯示它仍然有效,我們的分發證書仍顯示為已撤銷。 我們獲得了一個新的發行證書,這在鑰匙串中是綠色的(有效),並且解決了這個問題。


讓我們項目P導入自定義庫L,然後你必須將L添加到

P -> Build Phases -> Embed Frameworks -> + 。 這對我行得通。