Xcode uyarısı: “Çıktı dosyası için çoklu derleme komutları”


494

Böyle bir hata alıyorum:

[WARN] Uyarı: Çıktı dosyası için birden fazla derleme komutu /Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png

[WARN] Uyarı: Çıktı dosyası için birden fazla derleme komutu /Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png

[WARN] Uyarı: Çıktı dosyası için birden fazla derleme komutu /Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png

Ama Xcode'u kontrol ettim ve bu tür dosyaların kopyalarını hiç görmüyorum. Gibi bu yazı Posta Listeleri demek Apple, hiçbir çiftleri vardır.

Yanıtlar:


809

Proje Gezgini'nde Xcode Proje dosyanızı seçin. Bu size proje ayarlarını ve projedeki hedefleri gösterecektir. "Paket Kaynaklarını Kopyala" Derleme Aşamasına bakın. Sorunlu dosyaları bu listede iki kez bulmalısınız. Yinelenen başvuruyu silin.

Xcode, aynı dosyayı uygulamanızla iki kez paketlemeye çalıştığınızdan şikayet ediyor.


1
(Finder kullanarak) derleme klasöründen bazı varlıkları sildiğimde bana olur. Aynı adlarla güncellenen ve XCode işaretleme "hedefe ekle" seçenekleri içinde sürüklenen varlıklarla değiştirilen varlıklar. Görünüşe göre XCode, Copy Bundle Resources'taki bu girişleri çoğaltarak senkronize değil
brainondev

1
Buna bir şey eklemek istedim. Bir şekilde bir çift yinelenen referansla sonuçlanırsanız (yaptığım gibi), "Ayarları Doğrula" yı tıklamanız yeterlidir ve yinelenen referansları otomatik olarak siler. Elle onları aramaktan çok daha kolay
Jon Mattingly

1
Benzer bir sorunum vardı. Bu cevap en yakın olanıydı. <projName> .xcodeproj / project.pbxproj dosyası, proje dosyaları yalnızca bir kez göstermesine rağmen yinelenen girişlere sahipti. Bu birleşme sorunuydu. vi ile düzenleme hile yaptı :) Beni doğru yönde işaret ettiğiniz için teşekkürler :)
javatarz

11
Paket Kaynaklarını Kopyala aşamasında çok sayıda çoğaltılmış dosyanız varsa, bu sayfanın altındaki 'Ayarları Doğrula'yı tıklayabileceğinizi ve XCode'un kopyaları size soracağını ve tıklarsanız tümünü kaldıracağını belirtmek gerekir. Değişiklikler yapın '. Cehennem onlar için bireysel olarak avlanmaktan çok daha hızlı.
Yeti42

1
"Publish-iOS" projeye yeniden eklediğimde SpriteBuilder şablonları ile benzer bir sorun vardı. Bir grup değil, bir "klasör başvurusu" olmasını istediğini ve tüm klasörü "Paket Kaynaklarını Kopyala" ya eklediğini ortaya koyuyor. Bu nedenle, tek tek kaynak bu listede görünmese bile, bir klasörden eklenmediğinden emin olun.
samkass

127

Git tabanlı alt projeler eklediğinizde buna kolayca neden olabilir. Xcode, bulucudan göremeseniz bile .git alt klasörünü göz ardı edecek kadar akıllı değildir, bu nedenle "master" veya "exclude" (standart git repo dosyaları) adlı birden fazla dosya olması çok karışık olacaktır. Xcode4 ile, projeye gidin (sol ağacın kökü), ardından uygulama hedefinizi tıklayın ve "Paket Kaynaklarını Kopyala" yı genişletin, ardından .git'e yapılan tüm referansları kaldırın, yine de bunların uygulamanızda pişirilmesine gerek yoktur.


43
Bir saniye için uğraştım, bu yüzden bu birine yardımcı olabilir: uygulama hedefi -> aşamalar oluşturma -> paket kaynakları kopyalama
jaime

2
Xcode projemde aynı ada sahip (ancak farklı dizinlerde) birden fazla dosya vardı. Yanlışlıkla bunlardan biri, Paket Kaynaklarını Kopyala adımında her ikisine de sahipti; Sadece birini kaldırın.
BastiBen

112

Aslında bunun cevabı oldukça basit.

Xcode projenizde, uyarıyı yükselten dosyaları arayın ve bunlardan birini silin.

Xcode, arama sonuçlarında bu dosyanın yalnızca bir referansını gösterir, ancak burada durmayın, devam edin ve silin. (silmeden önce proje dosyanızın yedeğini almak daha iyidir)

Şimdi projeyi tekrar oluşturun. Uyarı şimdi yok olmalıdır. (bu yanıt xcode'un önceki bir sürümü içindir)


Ancak dosyalar artık XCode'un grupları ve dosyaları bölmesinde görünmüyor. Bununla olan anlaşma nedir?
Tejaswi Yerukalapudi

1
Bununla ilgili sorun yaşamaya devam ederseniz, tüm dosyaları Xcode'dan kaldırın (diskte silmeyin). Sonra hepsini tekrar sürükleyin. Daha sonra hala sorunlarınız varsa, aslında aynı ada sahip bazı kaynaklarınız var (belki farklı klasörlerde) - bul ve yeniden adlandır / sil. Xcode çıktısı düz bir klasöre gider, böylece dizin yapısı yok sayılır.
n13

52

Bu bir Xcode hatası değildir, ancak uyarı mesajı gerçek nedeni tanımlamak için yeterince yardımcı değildir.

Bu hata iletisi, projenizde aynı ada sahip birkaç dosya olduğunda oluşur. Sadece yinelenen adlara sahip dosyaları silmeniz veya yeniden adlandırmanız gerekir ve sorun çözülür.


1
Evet, doğru cevap bu. Ve kaynak dosyalarınız olduğunda, örneğin dosya adınızdaki ancak dosya sisteminizde ayrı dizinlerde olan png'leriniz olduğunda durum kolayca ulaşabilir - oluşturma işlemi sırasında hepsi 1 dir'e, yani uygulama paketine kopyalanır.
Brynjar

@Brynjar, aynı ada sahip resimlere izin vermek için bir çözüm var mı? veya görüntülerin bir araya gelmesini önlemek için?
Andy

Aslında, paketlemeyi önlemek için Klasör Referansları oluşturabileceğinizi anladım.
Andy

İşte dizinin ne olursa olsun, yinelenen ada sahip dosyaları bulmanın bir yolu find . | grep -v \.git | rev | cut -d/ -f1 | rev | sort | uniq -c | sort, bu benim sorunumu çözmedi
William Entriken

26

Bu, projede aynı ada sahip 2 dosyanız varsa olur. Proje derlendiğinde dosyalar XCode'da gruplar halinde olsa da, tüm dosyalar aynı dizinde sonuçlanır. Diğer bir deyişle /group1/image.jpg ve /group2/image.jpg dosyalarına sahipseniz, derlenen projede iki image.jpg dosyasından yalnızca biri bulunur.


17

Daha önce de belirtildiği gibi, aynı ada sahip, ancak proje gezgininde farklı gruplarda (sarı klasörler) birden fazla dosyanız varsa bu sorun görülebilir. Benim durumumda, her biri bir "preview.jpg" ile uygulama paketine kopyalamak istediğim birden fazla alt dizin vardı kasıtlıydı:

grup referansları

Bu durumda, Xcode'un yalnızca grupları değil , dizin başvurusunu (mavi klasör simgesi) tanıdığından emin olmanız gerekir .

Sorun yaratan dosyaları kaldırın ve "Referansı Kaldır" ı seçin (bu yüzden onları tamamen silmiyoruz):

grup referanslarını kaldır


Bunları yeniden proje gezginine sürükleyerek projeye yeniden ekleyin. Görüntülenen iletişim kutusunda "Eklenen klasörler için klasör referansları oluştur" u seçin:

klasör referansı olarak ekle


Dosyaların artık proje gezgininde mavi klasör simgesine sahip olduğuna dikkat edin:

klasör referansları


Şimdi hedefin oluşturma aşamalarının "Paket Kaynaklarını Kopyala" bölümünün altına bakarsanız, dizinde bulunan her öğe için girişler yerine tüm klasör için tek bir giriş olduğunu fark edeceksiniz. Derleyici, bu dosyalar için birden fazla derleme komutundan şikayet etmez.


15

Bu bir hata değil. Xcode yardımcıları size yardımcı olabilir. Proje Gezgini'nde soldaki hedefi seçin. Ayarların altındaki "Ayarları doğrula" yı tıklayın. Xcode ayarları kontrol eder ve mümkünse kopyaları kaldırır.


14

Üstbilgilerde yinelemeler olduğunda bu durumun başka bir sürümü oluşabilir oluşturma aşamasında .

bunu düzeltmek için…

  1. proje hedefinize gidin
  2. Seç Build Phases
  3. seç Headersinşa aşamasını
  4. uyarıda gösterilen adı girin
  5. iki (veya daha fazla) öğeye dikkat edin
  6. +|-sol alt köşedeki kutuları bul
  7. öğelerden birini seçin ve -düğmesini tıklayın

7

Benim durumumda sorun, bir grup içindeki hedef ve klasörün aynı adından kaynaklanıyordu.

Sorunu çözmek için çakışan dosya veya klasörü yeniden adlandırmanız yeterlidir.


6

Bunun için oldukça kolay bir çözüm buldum:

  1. Proje gezgininden soruna neden olan dosyayı seçin
  2. Hedef üyeliğin dosya denetçisinden işaretini kaldırın
  3. Projeyi derleyin
  4. Dosya için hedef üyeliği tekrar kontrol edin

Uyarı gitti! Referans için bu görüntüyü kontrol edin.

resim açıklamasını buraya girin


5

En azından karşılaştığım durumlarda bunun bir XCode 4 hatasından kaynaklanabileceğinden eminim.

Projeye aynı anda birden çok dile bağlı dosyalar eklerseniz bu olur. Git farklarına bakarak bunu öğrendim. Taahhütte hiçbir şey yapmadım, ancak bazı yeni yerelleştirilmiş nib dosyaları ekledim. Ancak project.pbxproj dosyasının farkına baktığımızda, daha önce projede bulunan dosyalar için eklenen bir dizi yeni yinelenen referans gösterdi. Bunu yaptığı dosyalar benim için rastgele görünüyordu.

Aynı davranışı birçok kez tekrarladım.

Bu dosyaları projeden silmek, yalnızca özgün başvuruyu sildiğinden ve yinelemeleri bıraktığından sorunu gidermez. Bunu düzeltmenin tek yolu, bir taahhüdü geri döndürmek ve baştan başlamak veya proje dosyasını elle düzenlemek, bu da daha fazla vidalamanın gerçekten iyi bir yoludur, çünkü hangi kopyaların kaldırılacağını ve yapmanız gerektiğini söylemek zordur tonlarca farklı yerde.

Xcode 4 benim için büyük bir hayal kırıklığı.


Bu XCode 4.2 sabit gibi görünüyor. Daha önceki sürümlerde, yerelleştirme eklemek üzere olduğunuz dosyayı kendi "Grup" a (projedeki sanal klasör) yerleştirerek bu hatayı önleyebilirsiniz. Yerelleştirmeleri eklemeyi bitirdikten sonra, bulunduğu yere geri koyabilir ve oluşturduğunuz geçici Grubu silebilirsiniz.
Steve

Bu bir hata değil. Bunun nedeni, projenizde aynı ada sahip birden fazla dosya olması.
Todd Hopkinson

1
Bir dosyayı yerelleştirdiğinizde, farklı dizinler hariç her bir yerelleştirme için aynı dosya adına sahip olmanız gerekir. Bu gerçekten bir hataydı.
Steve

4

Bunun nedeni, ur "no.png" "d.png" ve "n.png" öğelerinin kaynaklarda çoğaltılmasıdır. Sadece tarihli dosyaları silin ve silin.


3

Aynı dosyanın birden fazla referansı olduğunda hata görünüyor. Aynı ada sahip 2 dosyam vardı ve bu hatayı aldım. Bunlardan birini sildiğimde hata kayboluyor ..


2

Bu konuda başka bir varyasyon. Daha önce önerilen çözümlerin hiçbiri gelip aynı mesajı vardı (kesinlikle sadece rahatsız edici dosyanın bir kopyası vardı).

Benim çözümüm proje.pbxproj dosyasını (XCode'dan çıktıktan ve elbette dosyayı yedekledikten sonra) bir metin düzenleyicide düzenlemek ve rahatsız edici dosyaya yapılan tüm referansları kaldırmaktı. Sonra, XCode'u yeniden başlattıktan sonra, dosyayı projeye manuel olarak ekledim ve her şey yolundaydı.

(Şüphem bu sorunun bir el kitabı, yani: XCode olmayan, proje dosyasının birleştirilmesi nedeniyle başıma geldi.)


1

Projenizde Frameworks klasörünü açın ve içinde yalnızca çerçevelerin bulunduğundan emin olun. Tüm Geliştirici klasörünü yanlışlıkla ekledim!


1

Aynı problemi dakikalar önce de yaşadım. 'Dağıtım hedefini' değiştirmek sorunumu çözdü.


1

Benim için Hedef> Oluşturma Ayarları> Paketleme> Ürün Adı, uygulamam için özel olan bir .plist dosyasında belirtilen başka bir değerle aynı değere ayarlandı. Sonunda oluşturma sürecimiz nedeniyle bu yinelenen dosyalar oluşturur.


1
Benim için sorun buydu, teşekkürler!
Leon

0

Swift 3 : (aynı zamanda eski sürümler) yinelenen varlıklara sahip olduğumda olur. Sadece bu sorunla dosyaları yeniden adlandırın ve her şey yolunda.

Ayrıca, bir Assets.xcassetskez yaptığınızda ve kopyaları yeni adlarla yeniden adlandırdığınızda da olabilir, bu yüzden onu unuttuktan sonra ve klasör referanslarını eklemek için kaldırın, ancak bu yinelenen dosyalar sorununa geri döner.


0

Basit bir yol,

  • Uygulama hedefine git
  • Yapı Aşamalarına Git
  • Çıktı dosyaları
  • Çıkış dosyalarının yolunu silin, sonra proje oluşturun. Başarılı bir şekilde çalışacaktır.

0

Anahtar yapmak pod deintegrateve rm *.workspacedosyalamak oldu! Ne zaman kaybı!


0

React-Native kullanıcıları. dosyaya git -> çalışma alanı ayarları -> sistem kur -> eski sisteme değiştir. ve şimdi iyi inşa edilmelidir. React-Native henüz yeni dosya sistemiyle uyumlu değil.


0

Use_frameworks'e yorum yapma! PodFile benim için çalıştı.

#use_frameworks!

Not: Bunu XCode 10.1, pod 1.8.4 sürümünde yaptı


-1

Daha iyi bir yol olduğundan emin olsam da, nuking sadece 60 saniyeden az sürdü ve işe yaradığını bulabileceğim tek şeydi.

  1. Repo'yu çöp kutusuna sürükleyin.
  2. repo klonlayın.
  3. repo'nuzu doğru uzaktan izleme ile ayarlayın. git remote add <url.git>veyagit remote set-url <url.git>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.