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からプロジェクトをビルドすると、常に成功します。
私は松葉杖のような解決策を見つけました:File
で_Legacy Build System
_を選択します-> _Workspace Settings
_-> _Build System
_ Xcode GUIで。
なぜこのソリューションは悪いのですか?のため:
_Legacy Build System
_はNew Build System (Default)
よりも低速です。
Xcode設定ではなくワークスペースです。つまりJenkinsまたはいくつかのバージョン管理システムのアクションでワークスペースフォルダーをクリーンアップすると、この設定がデフォルトにリセットされ、機能していないオプションが再び選択されます。
プロジェクトの派生データを削除して問題を解決しました