簡體   English   中英

Xcode 10 構建失敗,“命令 CompileSwift 失敗,退出代碼為非零”

[英]Xcode 10 build fails with 'Command CompileSwift failed with a nonzero exit code

我最近將 Xcode 更新到版本 10,並在嘗試構建我的項目時開始收到一個奇怪的錯誤。 我目前在 Swift 4.0 上,我確實嘗試升級到 swift 版本 4.2。 但是當我這樣做時,我在許多框架中都收到了同樣的錯誤。

命令編譯 Swift 失敗,退出代碼為非零

到目前為止,我已經刪除了派生文件夾。 更新了所有 pod,還刪除了所有 pod,並使用下面的終端命令重新安裝了它們。

sudo gem install cocoapods-deintegrate cocoapods-clean
pod deintegrate
pod clean
pod install

這無法解決我的問題。 但是,我發現一些可行的方法是在Build Setting -> valid architectures中添加arm64架構並啟用自動代碼但是,當我檢查它已經存在並且代碼簽名已經啟用時。

此外,我確實有一些與框架有關的其他構建錯誤。

SwiftMessages

“SwiftMessages.Config”類型的值沒有成員“presentationContext”

WhatsNewKit

調用中缺少參數“背景顏色”的參數

我向每個框架的開發人員提出了問題,以尋求解決這些問題的幫助。

SwiftMessage 上的問題 GitHub WhatsNewKit 上的問題 GitHub

當我單擊presentationContext時,它會將我帶到SwiftMessages框架中的結構。 通常,當我收到“沒有成員”警告時,我無法點擊查看它存在的原始位置。

我認為這與 cocoa 吊艙有關,但還沒有找到解決方案。 我能做些什么來糾正這個問題? 如果有人可以提供幫助,我們將不勝感激,現在已經堅持了一天。

更新:最新構建的兩個框架適用於 swift 4.2。 當我將每個框架的版本更改為在 swift 4.0 中構建的版本時,我得到了要構建的項目。

確保您的項目 Swift 語言版本是正確的版本。 SwiftMessages 6.0.0 適用於 Swift 4.2。 Xcode->Project->Target->Build Settings->Swift 語言版本

確保您的項目構建設置優化級別處於無優化 [-Onone]。

在此處輸入圖片說明

將 Swift 版本設置為 4.2,然后 pod deintegrate,pod install,為我解決這個問題。 謝謝@alejandro-iván

我是這樣解決的:

  1. 注釋.pod文件中的所有 pod
  2. 從終端運行命令pod install --no-repo-update
  3. 打開Xcode執行清理並重建項目
  4. 現在打開您的.pod文件並取消注釋第一個庫
  5. 從終端運行命令pod install

.pod文件中的每個取消注釋庫重復步驟2 - 3 - 4 -5

我希望它能對你有所幫助。

對於 pod SwiftMessages,如果您的應用不是 swift 4.2,您需要使用 5.01 版的 pod 'SwiftMessages', '~> 5.0.1'

它會像魅力一樣發揮作用

在此處輸入圖片說明

當我在兩個不同的組中使用相同的類名時,這個錯誤發生在我身上。 然后我重命名了其中一個類,問題就解決了

我有幾個框架(本土)加上我的應用程序。 不知何故,他們最終與 Swift 版本不同步。 確保所有框架都是相同的版本。 就我而言,它們都需要設置為 Swift 4.2。 如果您還沒有遷移到 4.2,請記住 Xcode 對此有幫助:Edit -> Convert -> To Current Swift Syntax。

所有的答案對我都有幫助。 就我而言,我只手動安裝框架,但也會發生這種問題。 我嘗試了所有答案,但在構建過程中仍然遇到此問題。 奇怪的是,在編碼時,我可以 cmd-click 並解決所有“丟失”的組件。 我還清理和刪除了派生數據,重新啟動了 Xcode 等。

我最終通過引入這些額外的步驟讓它工作:

每個框架項目/目標(包括我自己的)上:

  • 驗證一致的 Swift 版本(在我的情況下為 4.2)
  • 將僅針對活動架構的構建設置為
  • 將 Valid Architecture 設置為arm64、armv7 (與基礎項目匹配)
  • 將優化級別設置為(用於調試)
  • 將編譯模式設置為整體

早上好! 干干凈凈。 使用" commond + shift + k關閉Xcode。導航到Podfile 所在的項目目錄。執行pod update/pod install 打開x.xcworkspace

我在升級到 Xcode 10.2 和 Swift 5 時偶然發現了這個問題。 在嘗試了所有內容后,我在發行說明中發現了這個問題:

啟用 Thread Sanitizer 時,Swift 編譯器可能會在構建期間崩潰。 (48719789)

果然,關閉 Thread Sanitizer 后,我的項目可以再次編譯而不會出錯。

因此,如果您收到此錯誤並啟用了 Thread Sanitizer - 將其關閉!

同樣的問題在 Xcode 10.2 中發生在我身上,這是一個 Xcode 錯誤..! 所以,我在舊的 Xcode 版本(9.4)中打開,它運行良好。 然后我在發布后更新到 Xcode 10.2.1 -> Clean and build your project,現在我的問題解決了。

我遇到了同樣的問題,我的 Xcode 版本是 10.2.1 (10E1001),Cocoapods 版本是 1.7.0.beta.2。

回到Cocoapods 1.6.1,問題解決了。 具體步驟是:

  1. pod deintegrate取消集成。
  2. 卸載所有 Cocoapods。

     for i in $( gem list --local --no-version | grep cocoapods ); do gem uninstall $i; done
  3. 安裝穩定版的 Cocoapods。 現在是 1.6.1。

     gem install cocoapods
  4. 清理項目並清空派生數據

  5. pod install
  6. 重新編譯項目

就我而言,這是一個代碼錯誤:

self.myDto.map{ (dto)} in 
      var stringValue = (dto.value(forKey: "name") as! String)
      stringValue.append("c")
      return stringValue
}

剛剛刪除那個stringValue變量解決了這個問題。

我只是有相同的錯誤消息,這里和這個問題的副本中的任何答案都不適用於我的項目或有幫助。 我繼續閱讀錯誤消息並意識到我愚蠢地將兩個單獨的 swift 文件命名為不同文件夾中的同名文件,打算更改一個,但在更改一個之前,我嘗試運行我的項目並生氣了最后一個小時。

最重要的是,不要意外地將您的文件命名為相同的名稱並徹底閱讀您的錯誤代碼!

僅用於使用該命令重新安裝pod pod install請參閱下面的附件

https://i.stack.imgur.com/dbGyV.png

在我的情況下,我連接了一個實際的 iphone 而不是模擬器,並在上面運行了一次應用程序,它解決了這個問題。 但是先連接iphone,然后從這個菜單中選擇它,然后按運行按鈕。 問題也會解決。

在此處輸入圖片說明


target 'XYZ' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for xyz
  pod 'SwiftyJSON'
  pod 'Localize-Swift'
    pod 'Alamofire'
    pod 'Kingfisher'
    pod 'Tabman'
    pod 'RSSelectionMenu'
    pod 'Pushbots'
    pod 'ACProgressHUD-Swift', '~> 1.4' 
    pod 'SKPhotoBrowser'
    pod 'ZoomableImageSlider'
    pod 'RSSelectionMenu'
    pod 'DropDown'
    pod 'ImagePicker'

end

我將平台 :ios, '10.0' 更新為 11.0,錯誤消失了。 更改您的平台或操作系統版本並檢查。 希望能有所幫助。

指定您的 pod 版本,例如pod 'RealmSwift', '~> 5.3.5'或取消注釋# platform :ios, '9.0'在您的 Podfile 中

我在 Xcode 14 上遇到了這個問題。在 podfile 底部添加這個。

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
    # some older pods don't support some architectures, anything over iOS 11 resolves that
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
    end
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM