web-dev-qa-db-ja.com

Xcode 10ビルドのプレアクションから実行すると、Carthageが起動しない

ビルドのプリアクションとしてcarthage update --platform iOSを実行する単純なkshスクリプトがあり、Xcode 10にアップデートすると失敗し始めました。ターミナルでコマンドを実行すると、Carthageフォルダーが正常に生成されます。

この問題を再現するには、Xcodeを終了し、DerivedDataおよびCarthageフォルダーを削除します。次に、Xcode 10を開いてビルドを試みます。

私が得るエラー:

<unknown>:0: error: unable to load standard library for target 'arm64-Apple-ios8.0-simulator'

** ARCHIVE FAILED **


The following build commands failed:
    CompileSwift normal armv7
    CompileSwiftSources normal armv7 com.Apple.xcode.tools.Swift.compiler
    CompileSwift normal arm64
    CompileSwiftSources normal arm64 com.Apple.xcode.tools.Swift.compiler
(4 failures)
Build Failed

セットアップ

  • カルタゴ0.31.1-0.33.0
  • CartfileはAlamofire 4.7.3を指します

私が試したこと

  • carthage bootstrapを使用しても機能しませんでした
  • Alamofire依存関係ターゲットをiOS 8.4および10(ローカルフォークから)に引き上げても機能しませんでした
  • this SO question。 からのすべての回答は機能しませんでした
  • オープンカルタゴチケット のアドバイスに従ってenv -iを使用しましたが、機能しませんでした

ソリューション

  • 初めてビルドするときは「Generic iOS Device」を選択します。
  • SDKパラメータを直接xcodebuildに渡す この回答にあります。 これにより、チェックアウトとビルドで構成される独自のcarthage updateを作成する必要があります。このオプションのみがXcodeビルドのアクション前のステップとして機能しました。 ソリューションがテストされました。

いくつかのリンク

Applesフォーラムの回答なしのスレッド。

閉鎖されたアラモファイアチケット

8
Boris Y.

solutionそのworkedは、カルタゴ更新を実行する直前に、XCode 10からの環境変数の1つを設定解除することでした:

lLVM_TARGET_TRIPLE_SUFFIXの設定を解除

カルタゴアップデート

6

私の場合、macOSを再起動すると問題が解決しました。

1
mishimay

私は実際にそのトリックを実行する方法とその方法を見つけました:

カルタゴ更新コマンドの後に有効なコマンドを1つ書き込みます

このチェックリストに従ってください:

  • コマンドラインツールがXcode 10.1を使用するように設定されていることを確認します。ターミナルから次のコマンドを実行します。

    Sudo xcode-select -s <path to Xcode 10.1>/Contents/Developer

  • スクリプトファイルに必要な権限があることを確認します。

    chmod 777 <path-to-script-file>

  • carthage updateコマンドの後に、1つの有効なコマンドを書き込みます。例:echo succeed(これで実際にうまくいきます):

    Example

テストされた環境:

  • Carthage 0.31.2
  • Xcode 10.1

作業デモ

https://github.com/MojtabaHs/Carthage-WorkingDemo

-最も重要なステップ

  • Do n't FORGET有効なコマンドを1つ書き込んで、カルタゴ更新コマンドの後に書き込みます

これは問題の説明されている問題の単なるハックであり、すべてのカルタゴの問題ではないことに注意してください。

1