Xcode警告:「出力ファイルの複数のビルドコマンド」


494

次のようなエラーが発生します。

[警告]警告:出力ファイルの複数のビルドコマンド/Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png

[警告]警告:出力ファイルの複数のビルドコマンド/Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png

[警告]警告:出力ファイルの複数のビルドコマンド/Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png

しかし、私はXcodeをチェックしましたが、そのようなファイルの重複はまったく見当たりません。このポストメーリングリストが言うアップルでは、何の重複はありません。

回答:


809

プロジェクトナビゲーターで、Xcodeプロジェクトファイルを選択します。これにより、プロジェクト設定とプロジェクト内のターゲットが表示されます。「バンドルリソースのコピー」ビルドフェーズを確認します。そのリストで問題のファイルを2回見つける必要があります。重複する参照を削除します。

Xcodeは、同じファイルをアプリケーションに2回バンドルしようとしていると不平を言っています。


1
(Finderを使用して)ビルドフォルダーからいくつかのアセットを削除したときに、私に起こります。アセットは同じ名前で更新されたアセットに置き換えられ、XCodeフラグの「ターゲットに追加」オプション内でドラッグされます。XCodeが同期から外れ、コピーバンドルリソースのエントリを複製しているようです
brainondev

1
これに1つ追加したいと思いました。どういうわけか(私がしたように)重複した参照のトンに終わったら、「検証設定」をクリックするだけで、重複した参照が自動的に削除されます。手動で探すよりもはるかに簡単
Jon Mattingly

1
同様の問題がありました。この答えは最も近いものでした。<projName> .xcodeproj / project.pbxprojファイルには、プロジェクトがファイルを一度しか表示していなくても、重複したエントリがありました。これはマージの問題でした。viでの編集はトリックをしました:)私を正しい方向に向けてくれてありがとう:)
javatarz

11
バンドルリソースのコピーフェーズで大量の重複ファイルがある場合、このページの下部にある[設定の検証]をクリックすると、XCodeは重複についてプロンプトを表示し、[]をクリックするとそれらをすべて削除することに注意してください変更を実行します。彼らを個別に狩るよりもはるかに速い地獄。
Yeti42 2013

1
「Published-iOS」をプロジェクトに再度追加したときに、SpriteBuilderテンプレートで同様の問題が発生しました。グループではなく「フォルダ参照」にしたいことが判明し、フォルダ全体を「バンドルリソースのコピー」に追加しました。そのため、個々のリソースがそのリストに表示されない場合でも、フォルダーから追加されていないことを確認してください。
samkass 2014

127

これは、gitベースのサブプロジェクトを追加するときに簡単に発生します。Xcodeは、ファインダーからは見えなくても.gitサブフォルダーを無視するほどスマートではないため、「master」または「exclude」という名前の複数のファイル(標準のgit repoファイル)があると非常に混乱します。Xcode4を使用して、プロジェクト(左側のツリーのルート)に移動し、アプリターゲットをクリックして[バンドルリソースのコピー]を展開し、.gitへのすべての参照を削除します。いずれにしても、それらをアプリにベイクする必要はありません。



2
Xcodeプロジェクトに同じ名前の(ただし、異なるディレクトリにある)複数のファイルがありました。たまたま私の1つが両方のバンドルリソースをコピーするステップで両方を持っていたため、結果のアプリバンドルで一方が上書きされていました。それらの1つを削除するだけです。
BastiBen

112

実際、これに対する答えは非常に簡単です。

Xcodeプロジェクトで、警告を発するファイルを検索し、そのうちの1つを削除します。

Xcodeは検索結果にそのファイルの参照を1つだけ表示しますが、そこで停止せずに先に進んで削除してください。(削除する前にプロジェクトファイルのバックアップを作成することをお勧めします)

ここでプロジェクトを再度ビルドします。警告は消えるはずです。(この回答は、以前のバージョンのxcode用です)


しかし、ファイルはXCodeのグループとファイルペインに表示されなくなります。これはどうしたの?
Tejaswi Yerukalapudi、2010年

1
これでも問題が解決しない場合は、Xcodeからすべてのファイルを削除してください(ディスク上のファイルは削除しないでください)。次に、それらをすべてドラッグして戻します。それでも問題が解決しない場合は、実際には同じ名前のリソースが(おそらく別のフォルダーにある)いくつかあります-検索して名前を変更/削除します。Xcode出力はフラットフォルダーに入るので、ディレクトリ構造は無視されます。
n13

52

これはXcodeのバグではありませんが、警告メッセージは実際の原因を説明するには不十分です。

このエラーメッセージは、プロジェクトに同じ名前のファイルが複数ある場合に発生します。重複する名前のファイルを削除するか名前を変更するだけで、問題は解決します。


1
はい、これが正解です。また、リソースファイル(同じ名前のpngがファイルシステムの別々のディレクトリにあるなど)があると、状況が簡単に発生する可能性があります。ビルドプロセス中に、すべて1つのディレクトリ、つまりアプリバンドルにコピーされます。
ブリンジャー

@Brynjarは同じ名前の画像を許可するための回避策はありますか?または画像が一緒にバンドルされるのを防ぐには?
アンディ

実際には、バンドルを回避するためにフォルダー参照を作成できることがわかりました。
アンディ

ディレクトリに関係なく、重複した名前のファイルを見つける方法は次のとおりですfind . | grep -v \.git | rev | cut -d/ -f1 | rev | sort | uniq -c | sortが、これは私の問題を解決しませんでした
William Entriken

26

これは、プロジェクトに同じ名前の2つのファイルがある場合に発生します。プロジェクトのコンパイル時にファイルがXCodeのグループに含まれている場合でも、すべてのファイルが同じディレクトリに配置されます。つまり、/ group1 / image.jpgと/group2/image.jpgがある場合、コンパイルされたプロジェクトには2つのimage.jpgファイルのうちの1つしかありません。


17

前述のように、この問題は、同じ名前で複数のファイルがプロジェクトナビゲーターの異なるグループ(黄色のフォルダー)にある場合に発生する可能性があります。私の場合、App Bundleにコピーしたい "preview.jpg"がそれぞれにある複数のサブディレクトリがあったため、これは意図的なものでした。

グループ参照

この状況では、Xcode がグループだけでなく、ディレクトリ参照(青いフォルダーアイコン)を認識することを確認する必要があります。

問題のあるファイルを削除し、[参照の削除]を選択します(完全に削除するわけではありません)。

グループ参照を削除する


それらをプロジェクトナビゲーターにドラッグして、プロジェクトに再度追加します。表示されるダイアログで、「追加されたフォルダのフォルダ参照を作成する」を選択します。

フォルダ参照として追加


ファイルのプロジェクトナビゲーターに青いフォルダーアイコンが表示されます。

フォルダー参照


ターゲットのビルドフェーズの「バンドルリソースのコピー」セクションを見ると、ディレクトリ内に含まれる各アイテムのエントリではなく、フォルダ全体の単一のエントリがあることがわかります。コンパイラーは、これらのファイルの複数のビルドコマンドについて文句を言うことはありません。


15

これはバグではありません。Xcodeアシストがお手伝いします。プロジェクトナビゲーターの左側にあるターゲットを選択します。設定の下部にある[設定を検証]をクリックします。Xcodeは設定をチェックし、可能であれば重複を削除します。


14

この状況の別のバージョンは、ヘッダーのビルドフェーズに重複がある場合に発生する可能性があります。

これを修正するには…

  1. プロジェクトターゲットに移動
  2. 選ぶ Build Phases
  3. Headersビルドフェーズを選択します
  4. 警告に表示される名前を入力してください
  5. 2つ(またはそれ以上)の項目に注意してください
  6. +|-左下のボックスを見つけます
  7. アイテムの1つを選択し、-ボタンをクリックします

7

私の場合、問題はグループ内のターゲットとフォルダの同じ名前が原因でした。

問題を解決するには、競合するファイルまたはフォルダの名前を変更するだけです。


6

私はこれのためのかなり簡単な解決策を見つけました:

  1. プロジェクトナビゲーターから問題の原因となっているファイルを選択します
  2. ファイルインスペクタからターゲットメンバーシップのチェックを外します
  3. プロジェクトをビルドする
  4. ファイルのターゲットメンバーシップを再確認します

警告は消えました!この画像を参照してください。

ここに画像の説明を入力してください


5

私はこれがXCode 4のバグが原因で発生する可能性があると確信しています。

複数の言語依存ファイルを同時にプロジェクトに追加すると発生します。これはgitの違いを調べてわかった。私はコミットで何もしませんでしたが、ローカライズされた新しいnibファイルをいくつか追加しました。しかし、project.pbxprojファイルの違いを振り返ると、以前にプロジェクトに存在していたファイルに追加された新しい重複参照がたくさん表示されました。これを行うファイルもランダムに見えました。

これとまったく同じ動作を何度も再現しました。

これらのファイルをプロジェクトから削除しても問題は解決しません。元の参照のみが削除され、重複が残るためです。それを修正する唯一の方法は、コミットに戻って最初からやり直すか、プロジェクトファイルを手動で編集することです。これは、削除する重複を判断するのが難しく、それを実行する必要があるため、さらに混乱させる本当に良い方法です。さまざまな場所で。

Xcode 4は私にとって大きな失望です。


これはXCode 4.2で修正されたようです。以前のバージョンでは、ローカリゼーションを追加するファイルを独自の「グループ」(プロジェクトの仮想フォルダー)に最初に配置することで、このバグを回避できました。ローカリゼーションの追加が完了したら、それを元の場所に戻し、作成した一時グループを削除できます。
スティーブ

これはバグではありません。これは、プロジェクトに同じ名前のファイルが複数あることが原因です。
トッドホプキンソン

1
ファイルをローカライズするとき、異なるディレクトリを除いて、ローカライズごとに同じファイル名を持っているはずです。これは確かにバグでした。
Steve

4

これは、「no.png」、「d.png」、「n.png」がリソース内で重複しているために発生します。重複したファイルの削除を探して削除します。


3

同じファイルの参照が複数ある場合、エラーが表示されるようです。同じ名前のファイルが2つあり、このエラーが発生しました。そのうちの1つを削除すると、エラーが消えます。


2

この問題のさらに別のバリエーション。以前に提案された解決策のいずれも問題を解決しなかった同じメッセージが表示されました(たとえば、問題のファイルのコピーは1つしかありませんでした)。

私の解決策は、project.pbxprojファイルをテキストエディターで編集し(XCodeを終了してファイルをバックアップした後)、問題のファイルへの参照をすべて削除することでした。次に、XCodeを再起動した後、手動でファイルをプロジェクトに追加し直し、すべてが正常でした。

(私の疑いは、この問題が手動、つまりXCode以外のプロジェクトファイルのマージのために発生したことです。)


1

プロジェクトのFrameworksフォルダーを開き、内部にフレームワークのみがあることを確認します。誤ってDeveloperフォルダー全体を追加しました!



1

私にとって、ターゲット>ビルド設定>パッケージング>製品名は、アプリにカスタムの.plistファイルで参照される別の値と同じものに設定されました。最終的にはビルドプロセスが原因で、重複したファイルが作成されます。


1
これは私にとって問題でした、ありがとう!
レオン

0

スウィフト3:(古いバージョンも)重複したアセットがあると発生します。この問題のあるファイルの名前を変更するだけで、すべてうまくいきます。

これは、を作成しAssets.xcassets、重複の名前を新しい名前に変更した場合にも発生する可能性があるため、それを忘れて削除してフォルダー参照を追加すると、重複ファイルの問題に戻ります。


0

簡単な方法の1つは、

  • アプリターゲットに移動
  • ビルドフェーズに進みます
  • 出力ファイル
  • 出力ファイルのパスを削除して、プロジェクトをビルドします。正常に実行されます。

0

重要なことは、実行pod deintegrateしてrm *.workspaceファイルすることでした!なんと時間の無駄!


0

React-Nativeユーザー。gotoファイル->ワークスペース設定->ビルドシステム->レガシービルドシステムに変更します。これで問題なくビルドできるはずです。React-Nativeはまだ新しいファイルシステムと互換性がありません。


0

コメントuse_frameworks!PodFileで私のために働いた。

#use_frameworks!

注:XCode 10.1、ポッドバージョン1.8.4でこれを行いました


-1

もっと良い方法があると私は確信していますが、ヌキングは60秒もかかりませんでした。

  1. リポジトリにゴミ箱にドラッグします。
  2. リポジトリのクローンを再作成します。
  3. 正しいリモートトラッキングを使用してリポジトリを設定します。git remote add <url.git>、またはgit remote set-url <url.git>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.