web-dev-qa-db-ja.com

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

私はこのようなエラーが出ています:

[警告]警告:出力ファイルに対する複数のビルドコマンド/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をチェックしました、そして、私はまったくそのようなファイルのどんな重複も見ません。 Appleメーリングリストの この記事 にあるように、重複はありません。

482
Futur

実はこれに対する答えはとても簡単です。

あなたのXcodeの中で警告を発生させるファイルを検索し、そして単にそれを削除してください。

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

ビルドを実行すると、警告が消えます。 (この答えは以前のバージョンのxcode用です)

105
Futur

プロジェクトナビゲータで、Xcodeプロジェクトファイルを選択します。これにより、プロジェクト設定とプロジェクト内のターゲットが表示されます。 「Copy Bundle Resources」ビルドフェーズを見てください。あなたは二度そのリストに問題のあるファイルを見つけるべきです。重複した参照を削除してください。

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

798
Mark Suman

これはgitベースのサブプロジェクトを追加するときに簡単に起こります。 Xcodeは、Finderから見ることができなくても.gitサブフォルダを無視するほど賢くはありません。そのため、 "master"または "exclude"という名前のファイルが複数あることが非常に混乱します(標準のgitリポジトリファイル)。 Xcode4では、プロジェクト(左のツリーのルート)に行き、あなたのアプリのターゲットをクリックして "Copy Bundle Resources"を展開し、それから.gitへの全ての参照を削除してください。

124
slf

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

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

52
aimacworx

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

25
respectTheCode

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

group references

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

問題のあるファイルを削除して[参照の削除]を選択します(したがって、それらを完全に削除することはしません):

remove group references


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

add as folder references


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

folder references


ターゲットのビルドフェーズの「Copy Bundle Resources」セクションを見ると、ディレクトリ内に含まれる各項目のエントリではなく、フォルダ全体のエントリが1つあることがわかります。コンパイラはそれらのファイルに対する複数のビルドコマンドについて不平を言いません。

17
Stuart

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

15
Gunther

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

これを修正するには…

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

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

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

7
Dmitry

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

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

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

enter image description here

6
Mahmoud Fayez

少なくともこれが私が遭遇したケースでは、私はこれがXCode 4バグによって引き起こされることができるとかなり確信しています。

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

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

これらのファイルをプロジェクトから削除しても、元の参照だけが削除され、重複する部分が残るため、問題は解決されません。それを修正する唯一の方法は、コミットを取り消して最初からやり直すか、プロジェクトファイルを手作業で編集することです。たくさんの異なる場所で。

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

5
Steve

これは、 "no.png"、 "d.png"、および "n.png"がリソース内で重複しているために発生します。削除重複ファイルを探して削除してください。

4
user944031

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

3
hilla

この問題に関するもう一つのバリエーション。私は同じメッセージを出して、以前に提案された解決策のどれも問題を解決しなかった(私は間違いなく例えば問題のあるファイルのコピーを1つだけ持っていた)。

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

(私の疑いは、この問題はマニュアルのせいで私に起こりました、すなわち、XCode以外のプロジェクトファイルのマージです。)

2
orlanthi

私は数分前に同じ問題を抱えていました。 「展開ターゲット」を変更して問題を解決したと述べました。

1
Martijn Mellens

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

1
rjobidon

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

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

0

私にとってうまくいったこと:

  1. レポをゴミ箱にドラッグします。
  2. リポジトリを再クローンします。
  3. 正しいリモートトラッキングでレポジトリを設定します。 git remote add <url.git>、またはgit remote set-url <url.git>

これは絶対に私のために働いた。私の場合では、とんでもない理由で、ローカルの依存関係のためにgit pull upstream developを実行したとき、gitは複数のコミットから重複したファイルを引き込み/生成します。

上記の手順を実行した後、問題は解決し、git pull upstream developは一度に複数のコミットから引っ張ることはなくなりました。おそらく私のレポには奇妙なgitキャッシュがありました。

0
ScottyBlades

私の場合、Target> Build Settings> Packaging> Product Nameは、私のアプリに固有の.plistファイルで参照されている別の値と同じものに設定されていました。最終的に私達の構築プロセスのためにこれは重複ファイルを作成します。

0
The Red Pea

キーはpod deintegraterm *.workspaceファイルをすることでした!なんて時間の無駄です!

0
Renetik

簡単な方法の1つは、

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