Xcode 12新しいビルドシステムは、複数のコマンドが資産を生産することを警告します.車
3415 ワード
Xcode 12の新しいビルドシステムでエラーが発生した場合、
この場合、1つの説明は、コピーリソースビルドフェーズが1つ(または複数)を含むことです.xcassetバンドル( s )Xcodeだけではなく、これらのバンドルをコピーしない代わりに、それらを組み合わせて、変換し、その内容を最適化し、ファイルと呼ばれるファイルを作成します.あなたのプロジェクトのすべての資産カタログの内容を含む車.
しかし、あなたが他のポッドといくつかのポッドを統合するならば、資産カタログも持っています
回避策はいくつかあります.
(1)迅速で汚れた方法は、レガシービルドシステム(ファイル→職場設定)に戻ることです.だがこれは問題を解決しないが回避する.あなたのアプリはまだ動作しますが、いつかアップルはあなたがトラブルになるレガシービルドシステムを終了することを決めた.
(2)場所
さて、自動化するスクリプトを書くことができます.
( 4 )ライブラリプロジェクトで開いたターゲットの「ビルドフェーズ」で定義済みの「コピーファイル」という名前を作成し、*をドラッグします.XCosSetを新しいフェーズに設定する.
それから、図書館は資産を作りません.車から.代わりに、cocoapodsは*をコピーします.libをインポートするメインプロジェクトにXCosSetを設定し、メインプロジェクトをビルドします.XCosSetを単一に設定する
これは非常にエレガントな、コピー段階を別の段階に分離することによって、xcode新しいビルドシステムをyellingから停止します.クレジットStackoverFlow
更新:アプリケーションのアイコンが表示されない問題と他の画像資産と安定性に表示されることがあります.このアプローチを選択した場合はチェックしてください.
( 5 )これを解決する最も適切な方法は、推奨されないものを使用するPODを識別することです
この場合、1つの説明は、コピーリソースビルドフェーズが1つ(または複数)を含むことです.xcassetバンドル( s )Xcodeだけではなく、これらのバンドルをコピーしない代わりに、それらを組み合わせて、変換し、その内容を最適化し、ファイルと呼ばれるファイルを作成します.あなたのプロジェクトのすべての資産カタログの内容を含む車.
しかし、あなたが他のポッドといくつかのポッドを統合するならば、資産カタログも持っています
Assets.car
ファイルが作成され、現在Xcodeは問題がありますAssets.car
ファイル.どちらが勝つかこれらの2つのファイルのうちどちらが最終的なアプリケーションで終わるか?そして、このファイルに依存する他のステップはどうですか?ビルドステップの後に実行する必要がありますか?これはXcodeが解決できない深刻な問題です.回避策はいくつかあります.
(1)迅速で汚れた方法は、レガシービルドシステム(ファイル→職場設定)に戻ることです.だがこれは問題を解決しないが回避する.あなたのアプリはまだ動作しますが、いつかアップルはあなたがトラブルになるレガシービルドシステムを終了することを決めた.
(2)場所
disable_input_output_paths: true
Podfileでは、最適化をスキップし、常にビルドの間、バンドルされた資産をコピーしていないので、毎回、きれいにPODから資源をダウンロードしてください.ビルドに余分なオーバーヘッドを追加する最適化されません、ローカルアプリケーション開発中に悪い経験につながる.# Podfile
platform :ios, '10.3'
install! 'cocoapods', :disable_input_output_paths => true
( 3 )検索[CP] Copy Pods Resources
プロジェクトビルドフェーズで.出力されたパスリストで、${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Assets.car
代わりにこの行をInputHeightパスリストに追加します.これはビルドを通過します.しかしながら、これは手動のステップです、あなたのCIがpod - installをしているたびに、あなたはまだ出力されて、構築に失敗したOutputLand Pathリストのこのエントリーを見ることができました.さて、自動化するスクリプトを書くことができます.
# Podfile
post_install do |installer|
project_path = './AdaEmbedFramework.xcodeproj'
project = Xcodeproj::Project.open(project_path)
project.targets.each do |target|
puts target
if target.name == "AdaEmbedFramework"
phase = target.shell_script_build_phases.find { |bp| bp.name == '[CP] Copy Pods Resources' }
if !phase.nil?
phase.input_paths.push('${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Assets.car')
phase.output_paths.delete('${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Assets.car')
end
end
end
project.save(project_path)
end
しかし、これはどのくらいの時間、ここでは、XcodeやCocoapodを解決するために待ってこれをスティックする予定ですか?( 4 )ライブラリプロジェクトで開いたターゲットの「ビルドフェーズ」で定義済みの「コピーファイル」という名前を作成し、*をドラッグします.XCosSetを新しいフェーズに設定する.
それから、図書館は資産を作りません.車から.代わりに、cocoapodsは*をコピーします.libをインポートするメインプロジェクトにXCosSetを設定し、メインプロジェクトをビルドします.XCosSetを単一に設定する
Assets.car
ファイル.これは非常にエレガントな、コピー段階を別の段階に分離することによって、xcode新しいビルドシステムをyellingから停止します.クレジットStackoverFlow
更新:アプリケーションのアイコンが表示されない問題と他の画像資産と安定性に表示されることがあります.このアプローチを選択した場合はチェックしてください.
( 5 )これを解決する最も適切な方法は、推奨されないものを使用するPODを識別することです
resources
そのpodspecでは、それらを更新するresource_bundles
代わりに.podがこの修正に付属する後者のバージョンを持っていないならば、あなたはrepoをforkして、あなた自身を修理しなければならないかもしれません.公式フィックスがポッドで行われるまで、これは耐えやすい短期的です.あなたが何を破ることができたかわからないかもしれないのでresource_bundles
そのpodspecのパッチ.Reference
この問題について(Xcode 12新しいビルドシステムは、複数のコマンドが資産を生産することを警告します.車), 我々は、より多くの情報をここで見つけました https://dev.to/kylefoo/xcode-12-new-build-system-warns-multiple-commands-produce-assets-car-56imテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol