2017-10-19 159 views
0

我跑了carthage bootstrap --platform iOS並得到了「跳過安裝realm-cocoa.framework二進制由於錯誤:不兼容的Swift版本 - 框架與3.1和本地版本爲4.0」構建,然後在構建結束我得到了一個完整的「構建失敗:任務失敗,退出代碼爲65」錯誤。迦太基構建失敗

這點我到derivedDataPath,我檢查了xcodebuild聯編日誌以瞭解更多詳細信息,它讓我知道「PhaseScriptExecution下載\核心\和\同步/Users/user/Libary/Caches/org.carthage.CarthageKit/ DerivedData/9.0_9A ###/realm-cocoa/v2.10.2/Build/Intermediates.noindex/Realm.build/Release-iphoneos/Realm.build/Script-X#X#X#X#X.sh(1 failure )」。

但我仍然不完全確定Realm Cocoa究竟發生了什麼,或者如何解決,你知道嗎?

+1

您可能會嘗試再次運行您的carthage命令並添加開關 - 無使用二進制文件。 (這是前兩個破折號。)這對我處理Swift 3.x之間的兼容性問題,雖然我還沒有嘗試過4.0。 –

+0

邁克是對的。執行'carthage bootstrap --platform iOS --no-use-binaries',你還應該檢查你的Swift版本在命令行上是否等於Xcode包含的版本,以防萬一你安裝了多個Xcode版本。這是'swift --version',它應該返回4.0。一旦你確保版本運行迦太基命令,你就完成了。 – Orlando

+0

@MikeTaverne我已經嘗試過,當我遇到問題時,它大部分都能正常工作。我不確定問題是否更深,我需要修補一些額外的未來問題 – SRMR

回答

2

TL; DR:確保您正在使用最新版本迅速,包括在Xcode 9,然後執行carthage bootstrap --no-use-binaries --platform iOS --cache-builds

龍版本:

同時建立你在Xcode中得到了錯誤您的項目​​是由於Carthage爲了獲得Realm Framework的預構建版本而進行的下載。

但是,此預構建版本是使用以前版本的Swift編譯的(在這種情況下,錯誤指向的是v3.1)。此案例的解決方案將使用不同的命令執行依賴性安裝:

carthage bootstrap --platform iOS --no-use-binaries

這將依賴關係建立成功的項目。無論如何,這可能需要很長時間,因爲每次執行命令時都會從頭開始構建Realm.framework和RealmSwift.framework。因此,可以在迦太基上包含一個用於構建的緩存。該依賴性可以用

carthage bootstrap --no-use-binaries --platform iOS --cache-builds

安裝使用此選項將迦太基:

  • 引導,所以在Cartfile.resolved的版本將被使用,沒有更新。
  • --no-use-binaries沒有預建框架的下載建立依賴關係(避免3.1版本不兼容。)
  • --platform iOS將建立依賴關係只能在iOS中使用,避免情況下,有關Apple TV或Mac OS構建框架依賴關係支持它。這會削減很多時間!
  • --cache-builds將使迦太基能夠在本地緩存中存儲您的構建的依賴關係(並在需要時使用它),因此即使您再次執行該命令,它也只會複製存儲的框架並避免再次構建。