Peringatan Xcode: “Beberapa perintah build untuk file output”

494

Saya mendapatkan kesalahan seperti ini:

[PERINGATAN] Peringatan: Beberapa perintah build untuk file output /Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png

[PERINGATAN] Peringatan: Beberapa perintah build untuk file output /Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png

[PERINGATAN] Peringatan: Beberapa perintah build untuk file output /Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png

Tapi saya sudah memeriksa Xcode dan saya tidak melihat duplikat dari file seperti itu sama sekali. Seperti yang dikatakan oleh posting ini di Daftar Mailing Apple, tidak ada duplikat.

Futur
sumber

Jawaban:

809

Di Navigator Proyek, pilih file Proyek Xcode Anda. Ini akan menunjukkan kepada Anda pengaturan proyek serta target dalam proyek. Lihat di Fase Bangun "Salin Sumber Daya Bundel". Anda harus menemukan file yang menyinggung dalam daftar itu dua kali. Hapus referensi rangkap.

Xcode mengeluh bahwa Anda mencoba menggabungkan file yang sama dengan aplikasi Anda dua kali.

Mark Suman
sumber
1
Terjadi pada saya ketika saya menghapus beberapa aset dari folder build (menggunakan Finder). Aset diganti dengan yang diperbarui dengan nama yang sama dan menyeretnya dalam opsi XCode yang menandai opsi "tambahkan ke target". Tampaknya XCode keluar dari sinkronisasi menduplikasi entri-entri di Copy Bundle Resources
brainondev
1
Saya ingin menambahkan satu hal ke ini. Jika Anda berakhir dengan satu ton duplikat referensi entah bagaimana (seperti yang saya lakukan), Anda cukup klik "Validasi Pengaturan" dan secara otomatis akan menghapus referensi duplikat. Jauh lebih mudah daripada mencari mereka secara manual
Jon Mattingly
1
Saya punya masalah serupa. Jawaban ini adalah yang paling dekat. File <projName> .xcodeproj / project.pbxproj memiliki entri duplikat meskipun proyek hanya menampilkan file sekali. Ini adalah masalah penggabungan. mengedit dengan vi melakukan trik :) Terima kasih telah menunjukkan saya ke arah yang benar :)
j_textz
11
Perlu dicatat bahwa jika Anda memiliki banyak file duplikat dalam fase Copy Bundle Resources, Anda dapat mengklik 'Validasi Pengaturan' di bagian bawah halaman ini dan XCode akan meminta Anda tentang duplikat dan akan menghapus semuanya jika Anda mengklik ' Lakukan perubahan '. Neraka jauh lebih cepat daripada berburu untuk mereka secara individu.
Yeti42
1
Saya memiliki masalah serupa dengan templat SpriteBuilder ketika saya menambahkan kembali "Published-iOS" ke proyek. Ternyata ia ingin itu menjadi "referensi folder" dan bukan grup, dan telah menambahkan seluruh folder itu ke dalam "Salin Sumber Daya Bundel". Jadi, bahkan jika sumber daya individual tidak muncul dalam daftar itu, periksa untuk memastikan itu tidak ditambahkan dari folder.
samkass
127

Ini mudah disebabkan ketika Anda menambahkan subproyek berbasis git. Xcode tidak cukup pintar untuk mengabaikan subfolder .git walaupun Anda tidak dapat melihatnya dari finder, jadi akan sangat membingungkan bahwa ada beberapa file bernama "master" atau "exclude", (file git repo standar). Dengan Xcode4, buka proyek (root dari pohon kiri) lalu klik target aplikasi Anda dan perluas "Salin Sumber Daya Bundel", lalu hapus semua referensi ke .git, toh Anda seharusnya tidak perlu memasukkannya ke dalam aplikasi Anda.

slf
sumber
43
Saya meraba-raba sebentar, jadi ini dapat membantu seseorang: target aplikasi -> membangun fase -> menyalin sumber bundel
jaime
2
Saya memiliki banyak file dengan nama yang sama (tetapi dalam direktori berbeda) di proyek Xcode saya. Secara tidak sengaja salah satu dari saya memiliki keduanya dalam langkah Copy Bundle Resources, yang akan mengakibatkan salah satu dari mereka ditimpa dalam bundel aplikasi yang dihasilkan. Hapus saja salah satunya.
BastiBen
112

Sebenarnya, jawabannya cukup sederhana.

Dalam proyek Xcode Anda, cari file yang membangkitkan peringatan, dan hapus saja salah satunya.

Xcode hanya akan menampilkan satu referensi file itu di hasil pencarian, tetapi jangan berhenti di situ, lanjutkan dan hapus. (lebih baik membuat cadangan file proyek Anda sebelum menghapusnya)

Sekarang bangun proyek lagi. Peringatan itu seharusnya hilang sekarang. (jawaban ini untuk versi xcode sebelumnya)

Futur
sumber
Tetapi file tidak muncul di grup XCode dan panel file lagi. Apa masalahnya dengan ini?
Tejaswi Yerukalapudi
1
Jika Anda terus mengalami masalah dengan ini, hapus saja semua file dari Xcode (jangan hapus pada disk). Kemudian seret mereka semua kembali. Jika Anda masih memiliki masalah setelah daripada kemudian Anda benar-benar memiliki beberapa sumber daya dengan nama yang sama (mungkin di folder yang berbeda) - temukan dan ganti nama / hapus. Output Xcode masuk ke folder datar sehingga struktur direktori diabaikan.
n13
52

Ini bukan bug Xcode, meskipun pesan peringatan tidak cukup membantu untuk menjelaskan penyebab sebenarnya.

Pesan kesalahan ini terjadi ketika Anda memiliki beberapa file di proyek Anda yang memiliki nama yang sama. Anda hanya perlu menghapus atau mengganti nama file dengan nama duplikat dan masalahnya selesai.

aimacworx
sumber
1
Ya, ini jawaban yang benar. Dan situasinya dapat dengan mudah tiba ketika Anda memiliki file sumber, misalnya pngs dengan nama yang sama tetapi dalam direktori terpisah pada sistem file Anda - selama proses pembangunan mereka semua disalin ke 1 dir, yaitu bundel aplikasi.
Brynjar
@Brynjar apakah ada cara untuk memungkinkan gambar dengan nama yang sama? atau untuk mencegah gambar dibundel bersama?
Andy
Sebenarnya saya tahu bahwa Anda dapat membuat Referensi Folder untuk menghindari bundling.
Andy
Berikut adalah cara untuk menemukan file dengan nama rangkap, terlepas dari direktori find . | grep -v \.git | rev | cut -d/ -f1 | rev | sort | uniq -c | sortbagaimanapun, ini tidak menyelesaikan masalah saya
William Entriken
26

Ini terjadi jika Anda memiliki 2 file dengan nama yang sama dalam proyek. Meskipun file dalam grup di XCode ketika proyek dikompilasi, semua file berakhir di direktori yang sama. Dengan kata lain jika Anda memiliki /group1/image.jpg dan /group2/image.jpg proyek yang dikompilasi hanya akan memiliki salah satu dari dua file image.jpg.

hormatilah Kode
sumber
17

Seperti disebutkan sebelumnya, masalah ini dapat dilihat jika Anda memiliki beberapa file dengan nama yang sama, tetapi dalam kelompok yang berbeda (folder kuning) di navigator proyek. Dalam kasus saya, ini disengaja karena saya memiliki beberapa subdirektori masing-masing dengan "preview.jpg" yang ingin saya salin ke bundel aplikasi:

referensi grup

Dalam situasi ini, Anda perlu memastikan bahwa Xcode mengenali referensi direktori (ikon folder biru), bukan hanya grup.

Hapus file yang menyinggung dan pilih "Hapus Referensi" (jadi kami tidak menghapusnya sama sekali):

hapus referensi grup


Tambahkan kembali mereka ke proyek dengan menyeret mereka kembali ke navigator proyek. Pada dialog yang muncul, pilih "Buat referensi folder untuk folder yang ditambahkan":

tambahkan sebagai referensi folder


Perhatikan bahwa file sekarang memiliki ikon folder biru di navigator proyek:

referensi folder


Jika sekarang Anda melihat di bagian "Salin Sumber Daya Bundel" pada fase build target, Anda akan melihat bahwa ada satu entri untuk seluruh folder, daripada entri untuk setiap item yang terkandung dalam direktori. Kompiler tidak akan mengeluh tentang beberapa perintah build untuk file-file itu.

Stuart
sumber
15

Ini bukan bug. Xcode assist dapat membantu Anda. Pilih target, ke kiri di Navigator proyek. Klik pada "Validasi pengaturan" di bagian bawah pengaturan. Xcode akan memeriksa pengaturan dan menghapus duplikat jika memungkinkan.

Gunther
sumber
14

versi lain dari situasi ini dapat terjadi ketika ada duplikat di header fase membangun .

untuk memperbaiki ini ...

  1. pergi ke target proyek Anda
  2. memilih Build Phases
  3. memilih Headers fase pembangunan
  4. masukkan nama yang ditunjukkan dalam peringatan
  5. perhatikan dua (atau lebih) item
  6. temukan +|- kotak kotak di sudut kiri bawah
  7. pilih salah satu item, dan klik -tombol
john.k.doe
sumber
7

Dalam kasus saya masalah ini disebabkan oleh nama target dan folder yang sama di dalam grup.

Ganti nama file atau folder yang konflik untuk menyelesaikan masalah.

Dmitry
sumber
6

Saya menemukan solusi yang cukup mudah untuk ini:

  1. Pilih file yang menyebabkan masalah dari navigator proyek
  2. Hapus centang keanggotaan target dari inspektur file
  3. Bangun proyek
  4. Periksa kembali keanggotaan target untuk file itu lagi

Peringatan itu hilang! Periksa gambar ini untuk referensi.

masukkan deskripsi gambar di sini

Mahmoud Fayez
sumber
5

Saya cukup yakin ini dapat disebabkan oleh bug XCode 4, setidaknya dalam kasus yang saya temui.

Ini terjadi jika Anda menambahkan beberapa file yang tergantung pada bahasa ke proyek pada saat yang bersamaan. Saya menemukan ini dengan melihat perbedaan git. Saya tidak melakukan apa pun di komit tetapi menambahkan beberapa file nib lokal baru. Tetapi melihat kembali perbedaan file project.pbxproj itu menunjukkan banyak referensi duplikat baru ditambahkan untuk file yang sudah ada dalam proyek sebelumnya. File-file yang melakukan ini juga tampak acak bagiku.

Saya mereproduksi perilaku yang persis sama ini beberapa kali.

Menghapus file-file ini dari proyek tidak memperbaiki masalah karena hanya menghapus referensi asli dan meninggalkan duplikat. Satu-satunya cara untuk memperbaikinya adalah dengan mengembalikan komit dan memulai kembali, atau tangan mengedit file proyek, yang merupakan cara yang sangat baik untuk mengacaukannya lebih sulit karena sulit untuk mengetahui duplikat mana yang harus dihapus dan Anda harus melakukannya dalam satu ton tempat yang berbeda.

Xcode 4 hanyalah kekecewaan besar bagi saya.

Steve
sumber
Sepertinya ini diperbaiki di XCode 4.2. Dalam versi sebelumnya, Anda dapat menghindari bug ini dengan terlebih dahulu menempatkan file yang akan ditambahkan ke "Grup" miliknya sendiri (folder virtual dalam proyek). Setelah Anda selesai menambahkan pelokalan, Anda dapat mengembalikannya ke tempat semula dan menghapus temp Grup yang Anda buat.
Steve
Ini bukan bug. Itu karena memiliki lebih dari satu file dengan nama yang sama di proyek Anda.
Todd Hopkinson
1
Ketika Anda melokalkan file Anda seharusnya memiliki nama file yang sama untuk setiap pelokalan, kecuali dalam direktori yang berbeda. Ini memang bug.
Steve
4

Ini terjadi karena ur "no.png" "d.png" dan "n.png" digandakan dalam sumber daya. Cari saja hapus file yang dipublikasikan dan hapus.

pengguna944031
sumber
3

Kesalahan tampaknya muncul ketika Anda memiliki lebih dari satu referensi dari file yang sama. Saya memiliki 2 file dengan nama yang sama dan mendapatkan kesalahan ini. Ketika saya menghapus salah satunya kesalahan hilang ..

hilla
sumber
2

Namun variasi lain dalam masalah ini. Saya memiliki pesan yang sama muncul tidak ada solusi yang disarankan sebelumnya memecahkan masalah (saya pasti hanya punya satu salinan file yang menyinggung misalnya).

Solusi saya adalah mengedit file project.pbxproj dalam editor teks (setelah berhenti XCode dan membuat cadangan file tentu saja) dan menghapus semua referensi ke file yang menyinggung. Kemudian, setelah memulai XCode lagi, saya secara manual menambahkan file kembali ke proyek dan semuanya baik-baik saja.

(Kecurigaan saya adalah bahwa masalah ini terjadi pada saya karena manual, yaitu: non-XCode, penggabungan file proyek.)

orlanthi
sumber
1

Buka folder Frameworks di proyek Anda dan pastikan hanya ada frameworks di dalamnya. Saya menambahkan secara tidak sengaja seluruh folder Pengembang!

rjobidon
sumber
1

Saya memiliki masalah yang sama beberapa menit yang lalu. Saya telah menyebutkan bahwa mengubah 'target penyebaran' memperbaiki masalah saya.

Martijn Mellens
sumber
1

Bagi saya Target> Pengaturan Bangun> Pengemasan> Nama Produk disetel ke hal yang sama dengan nilai lain yang dirujuk dalam file .plist yang khusus untuk aplikasi saya. Akhirnya karena proses pembangunan kami ini membuat file duplikat.

Kacang Merah
sumber
1
Ini masalah bagi saya, terima kasih!
Leon
0

Cepat 3 : (tetapi juga versi yang lebih lama) itu terjadi ketika saya memiliki aset dengan duplikat. Ganti nama file dengan masalah ini dan semuanya berjalan dengan baik.

Itu bisa terjadi juga ketika Anda telah membuat Assets.xcassetsdan Anda telah mengganti nama duplikat dengan nama baru jadi setelah waktu Anda lupa dan menghapusnya untuk menambahkan referensi folder tetapi yang satu ini kembali ke masalah file duplikat ..

Alessandro Ornano
sumber
0

Salah satu cara sederhana adalah,

  • Buka Target aplikasi
  • Pergi ke Build Phases
  • Keluarkan file
  • Hapus path file out put, lalu bangun proyek. Ini akan berjalan dengan sukses.
Rajesh Maurya
sumber
0

Kuncinya adalah melakukan pod deintegratedan rm *.workspacemengajukan! Buang-buang waktu saja!

Renetik
sumber
0

Pengguna Bereaksi Asli. file goto -> pengaturan ruang kerja -> build system -> ubah ke legacy build system. dan itu harus dibangun dengan baik sekarang. React-Native belum kompatibel dengan sistem file baru.

iidiidiotik
sumber
0

Mengomentari use_frameworks! di PodFile bekerja untuk saya.

#use_frameworks!

Catatan: Apakah ini di XCode 10.1, pod versi 1.8.4

Vishwas Singh
sumber
-1

Walaupun saya yakin ada cara yang lebih baik, nuking hanya membutuhkan waktu kurang dari 60 detik, dan satu-satunya hal yang saya temukan bisa berhasil.

  1. Seret repo ke tempat sampah.
  2. klon ulang repo Anda.
  3. atur repo Anda dengan pelacakan jarak jauh yang benar. git remote add <url.git>, ataugit remote set-url <url.git>
ScottyBlades
sumber