Xcode10 Archive Error - Multiple command ... 'xxx/Info.plistソリューション

2648 ワード

エラーメッセージ

:-1: Multiple commands produce '/Users/XXX/Library/Developer/Xcode/DerivedData/XXX-cqedfsiaqyswfpdkffoiytinrkcj/Build/Intermediates.noindex/ArchiveIntermediates/XXX/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/Info.plist':
1) Target 'XXX' (project 'Pods') has copy command from '/Users/XXX/Documents/SourceCode//XXX/Pods/XXX/XXX/Info.plist' to '/Users/XXX/Library/Developer/Xcode/DerivedData/XXX-cqedfsiaqyswfpdkffoiytinrkcj/Build/Intermediates.noindex/ArchiveIntermediates/XXX/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/Info.plist'
2) Target 'XXX' (project 'Pods') has copy command from '/Users/XXX/Documents/SourceCode//XXX/Pods/XXX/XXX/Info.plist' to '/Users/XXX/Library/Developer/Xcode/DerivedData/XXX-cqedfsiaqyswfpdkffoiytinrkcj/Build/Intermediates.noindex/ArchiveIntermediates/XXX/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/Info.plist'
3) Target 'XXX' (project 'Pods') has copy command from '/Users/XXX/Documents/SourceCode/XXX/Pods/XXX/XXX/Info.plist' to '/Users/XXX/Library/Developer/Xcode/DerivedData/XXX-cqedfsiaqyswfpdkffoiytinrkcj/Build/Intermediates.noindex/ArchiveIntermediates/XXX/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/Info.plist'
4) Target 'XXX' (project 'Pods') has copy command from '/Users/XXX/Documents/SourceCode/XXX/Pods/XXX/XXX/Info.plist' to '/Users/XXX/Library/Developer/Xcode/DerivedData/XXX-cqedfsiaqyswfpdkffoiytinrkcj/Build/Intermediates.noindex/ArchiveIntermediates/XXX/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/Info.plist'


の原因となる


Xcode 10は新しいtaskのbuild方式を使用しており、これまではプライベートライブラリを作る際に厳しくなかったので、プライベートライブラリのInfo.plistファイルもPod-Specファイルに入れて工事に導入したので、新しいパッケージ方式でこれらのInfo.plistとメインエンジニアリングの両方がcopyで同じ場所にエラーが発生しました.

ソリューション


原因が分かったら解決策はよくわかりますplistはプロジェクトから削除します.
  • プライベートライブラリのspecファイルを変更し、各プライベートライブラリをアップグレードします.これは最も正しいですが、プロジェクトのプライベートライブラリが多く、依存が複雑で、アップグレード1回のコストが高い場合が多いです.
  • Podを使用している以上、Podスクリプトで方法を考えてみましょう.PodfileのHook方法があるのは明らかです.post_インストールの中でpodライブラリのInfoを話しています.plistリファレンスは削除され、コードは以下の通りです:
  • ### HOOK POST
    post_install do |installer|
        installer.pods_project.native_targets.each do |natviTarget|
            natviTarget.build_phases.each do |buildPhase|
                info_plist_ref = buildPhase.files.find { |f| f.file_ref.to_s == "Info.plist" }
                if info_plist_ref
                   buildPhase.remove_reference(info_plist_ref)
                end
            end
        end
    end