web-dev-qa-db-ja.com

Xcode 10コマンドライン構築:ファブリックInfo.plistエラーでアーカイブが失敗しました

2つのターゲットを持つiOSプロジェクトの自動ビルド用のJenkinsサーバーがあります。プロジェクトはコマンドラインユーティリティxcodebuildでビルドします。

完全なコマンドは

/usr/bin/xcodebuild -workspace "Our project.xcworkspace" 
 -scheme "First target" 
 -configuration Release 
 archive 
 DEVELOPMENT_TEAM = TEAMCODE 
 -allowProvisioningUpdates 

そして

/usr/bin/xcodebuild -workspace "Our project.xcworkspace" 
 -scheme "Second target" 
 -configuration Release 
 archive 
 DEVELOPMENT_TEAM = TEAMCODE 
 -allowProvisioningUpdates 

Xcodeをバージョン10に更新する前は、完全に動作しました。しかし、エラーが表示されるたびに更新した後

エラー:ファブリック:Info.plistエラー

パス/Users/Shared/Jenkins/Library/Developer/Xcode/DerivedData/Our_project-xxxx/Build/Intermediates.noindex/ArchiveIntermediates/Our project/BuildProductsPath/Release-iphoneos/First application.app/InfoでInfo.plistを処理できません.plistこれはタイミングの問題である可能性があります。Fabric実行スクリプトのビルドフェーズが最後のビルドフェーズであり、他のスクリプトによってXcodeが生成した場所からapplication.appが移動していないことを確認してください。 '$(BUILT_PRODUCTS_DIR)/ $(INFOPLIST_PATH)'を、Fabric実行スクリプトビルドフェーズの「入力ファイル」依存関係として追加することもできます。

**アーカイブに失敗しました**

グーグルしてエラーの説明を読んだ後、Xcodeで_Build phases_タブを開いて設定しました(_Run script_アイテムを一番下に移動し、_Run script only when installing_を確認して$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)を入力ファイルに追加しましたまた、空の_Run script_項目も削除します)。

コマンドラインから手動でビルドできるようになりました-問題は解決したようです。ジェンキンスでさえ、最初のターゲットを構築しました!しかし、secongターゲットは同じエラーではありませんでした。

プロジェクトを開いて[ビルドフェーズ]タブを見ると、_Run script_アイテムが上に移動し、新しい空の_Run script_が表示されていることがわかりました。その後、実験を行いました。ビルドフェーズをセットアップし、Xcode GUIでプロジェクトを再ビルドして、そのフェーズが再び並べ替えられるのを確認しました。そのため、ビルド中またはビルド後に発生します。

どうすればこのバグを修正できますか?

コマンドラインから手動でビルドフェーズを注文できますか?はいの場合、Jenkinsステップで行を追加します。

さらに、このエラーはコマンドラインのビルドでのみ表示されます。 Xcode GUIからプロジェクトをビルドすると、常に成功します。

10
General Failure

さて、私はファブリックからソリューションを得ました。 Xcode 10の場合、このパスをXCode $(BUILT_PRODUCTS_DIR)/ $(INFOPLIST_PATH)のビルドフェーズの入力ファイルに追加します

enter image description here

10
Elsammak

私は松葉杖のような解決策を見つけました:Fileで_Legacy Build System_を選択します-> _Workspace Settings_-> _Build System_ Xcode GUIで。

なぜこのソリューションは悪いのですか?のため:

  • _Legacy Build System_はNew Build System (Default)よりも低速です。

  • Xcode設定ではなくワークスペースです。つまりJenkinsまたはいくつかのバージョン管理システムのアクションでワークスペースフォルダーをクリーンアップすると、この設定がデフォルトにリセットされ、機能していないオプションが再び選択されます。

7
General Failure

以下を使用してCrashlyticsやファブリックのセットアップを完了するためのソリューション:

  1. ビルド設定に移動
  2. 「デバッグ情報フォ​​ーマット」を検索
  3. 「デバッグ」の値を「DWARF」から「dSYMファイル付きのDWARF」に変更します。
  4. プロジェクトを再度ビルドします。

「DWARF」を変更

enter image description here

「dSYMファイルを含むDWARF」へ

enter image description here

5
Bhavik Modi

「Embed pods Frameworks」と「Copy pods Resources」の後、crashlyticsで「Run Script」を最後に移動し、それが役に立ちました enter image description here

4

プロジェクトの派生データを削除して問題を解決しました

0
Hudi Ilfeld