Xcode 10 Hatası: Birden çok komut üretir


659

hata: Birden fazla komut '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist' üretir: 1) Hedef 'OptimalLive' komutundan 'kopya' var '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' - '/ Kullanıcılar / uesr / Kütüphane / Geliştirici / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Products / Debug-iphoneosimal .app / Info.plist '2) Hedef' OptimalLive ',' /Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist 'den' / Users / uesr / 'a kopyalama komutuna sahiptir. Kütüphane / Geliştirici / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Ürünler / Debug-iphoneos / OptimalLive.app / Info.plist '3) Hedef' OptimalLive ''/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' girişiyle işlem komutu var

Kodu Xcode9'da çalıştırmak çalışır, ancak Xcode10'da bir hata vardır.


Yönetilen cocoapod bağımlılıkları için bkz. Stackoverflow.com/a/52421345/334999
Shuo

projenize üçüncü taraf çerçevesini içe aktardığınızda ve kaynak dosyalarında info.plist varsa oluşur. Bu info.plist, uygulamanızın listesiyle çakışıyor. Sadece Yapı aşamalarından kaldırın
protspace

Sevgili okuyucu, bu sorunun her cevabını okuyun, yanlış olabilecek birçok farklı şey var.
iluvcapra

"Derleme Aşamaları -> Paket Kaynaklarını Kopyala" yoluna gidin. Dosya adını kontrol edip silin. Temiz ve
apllication

Yanıtlar:


1224

Sorun, birden fazla Plist veya Uygulama içindeki diğer dosyalar nedeniyle oluşuyor olabilir.

Çözüm -> Hedefi aç -> Fazlar oluştur> Paket Kaynaklarını Kopyala ve info.plistoradan kaldırın .

resim açıklamasını buraya girin

Not: Bir saat uygulaması da geliştirdiyseniz, plist'i saatten ve saat uzantısından da kaldırmanız gerekir.


12
Ayrıca, yanlış eklenen
info.plist

68
Biraz detay vermek gerekirse: Xcode 10'un yeni derleme sistemi proje yapılandırma sorunlarını yakalamakta daha iyi olduğu için bu hata meydana geliyor. Bu gibi sorunlar bazen yapınızla ilgili ince sorunlara neden olabilir, bu yüzden bunları düzeltmek iyidir.
Rick Ballard

2
Benim durumumda InfoPlist.strings
neowinston

8
Benim durumumda, info.plistözel CocoaPods bağımlılıklarımdan birinde, podspec'in source_filesözelliği ile eşleştirildiği için kepçelenen bir dosyam vardı . Modülümdeki info.plistdosyaya ihtiyacım yoktu , bu yüzden sadece sildim.
aapierce

3
Teşekkürler! Kodumu bir süre önce bazı geliştiriciler eklentisi ekledim ve ayrıca uygulamamın info.plist ile çakışan bir info.plist dosyası vardı
Christopher Smit

567

Bu derleme hatası için çözüm buldum, Xcode 10 derleme sistemiyle aynı sorunu olan herkes için düzeltmek için aşağıdaki adımları izleyin:

  1. Xcode'da Dosya-> Proje / Çalışma Alanı ayarları'na gidin.
  2. Derleme sistemini Eski Derleme sistemine değiştirin.

resim açıklamasını buraya girin Yeni Xcode 10 ile derleme sorununu çözecektir.

Yeni derleme sistemiyle çalışmak istiyorsanız, sorun giderme yardımını bu Apple Xcode yardım sayfasından bulabilirsiniz .

Bu yardımcı olur umarım!


4
bu sorunun neden ortaya çıktığını ve Eski Yapı Sisteminin seçilmesinin sorunu nasıl çözdüğünü açıklayabilir misiniz? @Akshay Sunderwani
user832

142
Sorunu düzeltmiyorsunuz, sadece onları saklıyorsunuz.
Caio

4
Tepki yerel projeler için derleme hatasını düzeltir. Buradaki konuya bakın: github.com/facebook/react-native/issues/20492 Eski Yapı Sistemine geçmek istemiyorsanız olası bir düzeltme vardır: github.com/facebook/react-native/issues/…
Eugen Timm

6
Bu uzun vadeli bir düzeltme değildir. Sonunda eski yapı sistemi artık bir seçenek olmayacak.
Paul King

6
% 100 problemi düzeltmek yerine saklayacağım çünkü bu çözümlerin hiçbiri işe yaramıyor. Cocoapod'larla ilgili bilinen bir sorun gibi görünüyor; bkz. github.com/CocoaPods/CocoaPods/issues/7949 . Umarım bu geçici çözüm artık bir seçenek olmadığında kendini bir şekilde düzeltir.
sudo

170

Xcode -> Dosya -> Çalışma Alanı Ayarları'na gidin. Bir tane açılır pencere bulacaksınız.

resim açıklamasını buraya girin

Derleme Sistemi etiketinden " Eski Derleme Sistemi " ni seçin . " Bitti " ye basın

Not: - Projenizi " cmd + shift + alt + k " ve " Türetilmiş Veriler " ile temizlediğinizden emin olun

Projenizi inşa edecek cazibe çalışacaktır :)


Anladığım kadarıyla, mevcut projelerimiz swift ve xcode'un eski sürümünü destekleyen eski swift ve xcode ile yapılır. Daha önce yaptığımız şey, "Paket Ayarları-> Swift eski Yapı Sistemi" ne gittik ve önceki sürümü seçtik.
Hardik1344

Başlangıçta "Swift Legacy Build System" üzerinde çalışıyordum, ancak bilgisayarımı yeniden başlattıktan sonra değiştirilmişti. Bu ayarı doğru yaptığınızı düşünseniz bile, yine de çift kontrol etmeye değer olabilir.
EndersJeesh

Bu çözüm sorunu çözmüyor, sadece gizliyor.
Argus

Ayrıca, Kullanıcı Başına çalışma alanı ayarlarını aynı olarak değiştirdiğinizden emin olun;)
Wei Shen


114

Bunu da deneyin. Xcode-> Dosya-> Proje Ayarları-> Derleme Sistemi -> Eski Derleme Sistemi.


38
Bu durumda Xcode projede bir sorunu işaretliyor, bu nedenle eski derleme sistemine geri dönmeniz şimdilik gizleyecektir. Xcode'un bu tür sorunları bildirmesi kasıtlıdır ve sorunu düzeltmek en iyisidir.
Rick Ballard

2
Hata CocoaPods'un oluşturulan projesinde ise, yeni bir CocoaPods sürümü sorunu düzeltene kadar yeni Derleme Sistemini devre dışı bırakardım.
Rivera

@RickBallard şimdi mantıklı, hangisi doğru çözüm olabilir? cevapların bir karışımı var gibi
rolando

1
Bu tür bir hatanın birden fazla nedeni vardır, ancak bunun anlamı hakkında daha fazla bilgiyi help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0
Rick Ballard

73

Bunu Ditto, aynı adda birden fazla örnek oluşturma komutundan alıyorsanız (DEĞİL 'copy files' build phase), öğesini değiştirmeniz gerekebilir Product Module Name.

  1. Xcode'un şikayet ettiği Hedef (ler) inizi tıklayın
  2. Tıklamak Build Settings
  3. Aramak Product Module Name
  4. Adı benzersiz bir adla değiştirin

Uygulamamızda bir izleme hedefi ve birkaç bildirim hedefi var, bu yüzden sadece Extensionmodül adının sonuna gibi şeyler koydum .

Bu çözümü ilk başta burada buldum: https://forums.developer.apple.com/thread/103913


1
Biraz iyi çalıştı, ama sonra köprü dosyası ile kırıldı.
Mohamad Kaakati

5
Benim durumumda, bu yapılandırma yapılandırmasını göstermek Alliçin aradığınız yerin sağında seçmek zorunda kaldım Product Module Name.
Hodson

56
Xcode 10'da aynı sorunu aldım. Aynı proje Xcode 9.4.1'de iyi çalışıyordu. Yani çözüm çok basit. Tüm info.plist dosyalarını hedeften kaldırmanız yeterlidir. Lütfen bunu tüm info.plist dosyaları için yapın. Aşama 1. İnfo.plist dosyasını seçin. 2. Dosya denetçisinde Hedef Üyelik'teki projenin işaretini kaldırın. Ardından projenizi çalıştırın. Teşekkürler !
Bir Kit

12
Benim için [Proje_Adı]> Derleme Aşamaları> Paket Kaynaklarını Kopyalamak ve orada kopyaları kaldırmak zorunda
kaldım

5
@Bharath info.plist dosyalarını projenizden kaldırmayın. Bahsettiğim gibi yalnızca Hedef'ten kaldırmanız gerekiyor. İnfo.plist dosyasını kaldıramıyoruz, proje için çok önemli.
Bir Kit

69

Core Data ile denemeler yapıyordum. Basit bir kontrol listesi programı için bir veri modeli oluşturdum ve NSManagedObjects'i oluşturdum. Projeyi derlediğimde aşağıdaki hatayı aldım:

error: Multiple commands produce '/Users/myUSerName/Library/Developer/Xcode/DerivedData/myCoreDateExperiment-gzbslaqdwglkzxemijpdqmizgyzc/Build/Intermediates.noindex/ myCoreDateExperiment /Debug-iphonesimulator/ myCoreDateExperiment.build/Objects-normal/x86_64/CheckListItem+CoreDataProperties.o':
1) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files
2) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files

Sorun veri modeli (benim durumumda CheckList.xcdatamodeld) "Derleme Kaynakları" listesinde idi. Listeden kaldırdığımda proje temiz bir şekilde derlendi.

  1. Proje gezginini açın ve projeyi seçin (en üstteki ilk giriş)
  2. "Projeler ve Hedefler" bölmesindeki Hedefler altında oluşturma hedefinizi seçin
  3. Üst taraftaki Aşamaları Oluştur seçeneğini belirleyin
  4. "Kaynakları Derle" girişini genişletin ve veri modeli adınızı arayın. Bulmakta güçlük çekiyorsanız "xcdatamodeld" ifadesini arayın.
  5. Derleme listesinden modeli silme
  6. Veri modelinin "Paket Kaynaklarını Kopyala" listesinde bulunduğundan emin olun. Eksikse ekleyin.

DÜZENLE

@WilliamT gibi. yorumlarda açıklar, derleme listesinde xcdatamodeld gerekir. Bunun yerine, xcdatamodeld dosyasındaki varlıklarınıza gidin. Hata veren modelleri seçin, soldaki paneli genişletin ve "Codegen" alanını "Manual / None" olarak değiştirin.


36
Xcdatamodeld dosyası aslında Derleme Kaynakları'nda olmalıdır. Çekirdek Veriler ile ilgili olarak bu hatayı görüyorsanız, büyük olasılıkla "NSManagedObject Alt Sınıfı Oluştur" u çağırdınız, ancak Varlığınız Codegen = "Sınıf Tanımı" olarak ayarlandığından kaynaklanıyor. Bu, sizin için bu sınıfları otomatik olarak oluşturduğu ve bunları iki kez var olacak şekilde manuel olarak oluşturduğunuz anlamına gelir.
William T.

1
hayat kurtarıcısın
user578386

1
@WilliamT. Biri NSManaged Object Alt Sınıfı Oluştur'u çağırıyorsa Codegen'in değeri ne olmalıdır?
Kaunteya

2
@Kaunteya Her bir CoreData Özelliğinde (tablo) Codegen'i "Manuel" olarak ayarlama seçeneği vardır
William T.

1
@WilliamT izleyin. tavsiye ve daha sonra temiz ve inşa.
PruitIgoe

40

Derleme günlüğünü kontrol ederken, bir uyarı fark ettim:

note: Using new build system
note: Planning build
note: Constructing build description
Build system information
warning: The Copy Bundle Resources build phase contains this target's Info.plist file '/Users/<redacted>/Repositories/Whitesmith/optimize-ios/Carthage/Checkouts/WSStatusBarNotification/Miscellaneous/Info.plist'. (in target 'JDStatusBarNotification')

Yani, durum buysa, sadece hedefinize gidin:

  1. Derleme Aşamaları
  2. Paket Kaynağını Kopyala
  3. Kaldır info.plist.

32
info.plist dosyası kopyalama paketi kaynaklarında mevcut değil, yine aynı hatayı alıyor
bunty kumar

Kopyalama paketi kaynakları derleme aşamasından aşırı bir Info.plist dosyasını kaldırmak benim için çözdü. Ancak, uyarım farklıydı çünkü yanlışlıkla farklı bir hedefin ancak aynı proje içinde yer alan bir Info.plist, Paket Kaynaklarını Kopyala oluşturma aşamasına eklendi. Uyarı şuydu: "uyarı: yinelenen çıktı dosyası '... MyApp.app/Info.plist' görevde: ProcessInfoPlistFile". Ve orijinal soru ile aynı hataya yol açar: "hata: Birden fazla komut '... MyApp.app/Info.plist' üretir."
Martin Polak

benim durumumda "LİSANS" dosyası oldu - bir kez kaldırdım, sorun düzeltildi, bu yüzden sorun "plist" daha genel, sadece daha sık karşılaşılan gibi görünüyor
vir us

37

CocoaPod'ları kullanıyorsanız, kapsülleri parçalamayı ve yeniden yüklemeyi deneyebilirsiniz. Benim için çalışıyor.

pod deintegrate

pod install


Evet, sorunum bir kapsül paketinden kaynaklandı ve sadece bu sorunu çözdü! teşekkürler
CodeBrew

@Ming Chu Teşekkürler
N. Der

30

Bunu Çalışıyor deneyin:

Xcode'da Dosya-> Proje / Çalışma Alanı ayarları'na gidin.

Derleme sistemini Eski Derleme sistemine değiştirin.


2
Bu durumda Xcode projede bir sorunu işaretliyor, bu nedenle eski derleme sistemine geri dönmeniz şimdilik gizleyecektir. Xcode'un bu tür sorunları bildirmesi kasıtlıdır ve sorunu düzeltmek en iyisidir. Daha fazla bilgi için lütfen help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 adresine bakın .
Rick Ballard

27

Hata mesajı Temel Veri dosyalarına başvuruyorsa bu yanıtı okuyun

Özet: Hem otomatik olarak oluşturulan hem de elle oluşturulan Temel Veriler tarafından yönetilen nesne sınıfı dosyalarınız olabilir.

Bu yanıt, hatanın ilk satırı bir Foo + CoreDataProperties.o veya Foo + CoreDataClass.o dosyasına başvuruyorsa geçerlidir . Misal:

error: Multiple commands produce '/Users/me/Library/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/ MyApp /Debug-iphonesimulator/ MyApp.build/Objects-normal/x86_64/Foo+CoreDataProperties.o':

1) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files

2) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files

Temel neden, Konuşma Metninin Derleme Hızlı Kaynak Dosyalarını Derle bölümü genişletilerek görülebilir . Örneğin:

<unknown>:0: error: filename "Address+CoreDataClass.swift" used twice: '/Users/myUserName/Projects/Jnky/Foo+CoreDataProperties' and '/Users/jk/myUserName/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/MyApp.build/Debug/MyApp.build/DerivedSources/CoreDataGenerated/Jnky/Foo+CoreDataProperties.swift'

Bahsedilen ilk dosya, proje dizininizde, bir kişinin Proje Gezgini'nde veri modelinizi seçip Düzenleyici > Yönetilen Nesne Alt Sınıfı menüsünü tıklatarak oluşturduğu bir kaynak dosyası vardır . Bu özellik Xcode 7 veya benzeri sürümlerde eklenmiştir.

İkinci dosya aynı adda ancak Xcode'larda gömülü bir dosyadır DerivedData. Veri modeli ( ) dosyası hedefin Derleme Kaynakları oluşturma aşamasında bulunuyorsa bu dosya her derleme sırasında otomatik olarak Xcode tarafından oluşturulur . Bu özellik Xcode 9 ya da daha fazlasına eklendi. Codegen açılır penceresinin ayarına bağlı olarak her varlık / sınıf için sıfır, bir veya iki dosya oluşturulur . Veri modelinizi düzenlerken bir varlık seçtiğinizde bu açılır pencere Veri Modeli Denetçisi'nde.xcdatamodeld

Data Model Inspector ekran görüntüsü

Ayarlar:

  • Manuel / Hiçbiri Hiçbir dosya oluşturulmuyor
  • Kategori / Uzantı Objective-C kategorisi veya Swift uzantısı içeren bir dosya, Foo + CoreDataProperties.m veya .swift dosyası oluşturulur.
  • Sınıf Tanımı Aynı Kategori / Uzantı dosyası oluşturulur ve ek olarak sınıf bildirimi ve tanımı içeren bir Foo + CoreDataClass.m veya .swift oluşturulur.

Bu nedenle, eski Xcode'a alışkın olan bir geliştirici (benim gibi) daha yeni bir Xcode'da bir projeye başladığında sorun oluştuğunu görüyorsunuz. Codegen açılır penceresindeki ayarlarımızın Xcode'un Apple'ın yinelenen dosyalar oluşturmasına neden olduğunu fark etmeden Proje Gezgini'nde görebildiğimiz dosyaları oluşturmak için yaptığımız Yönetilen Nesne Alt Sınıfı Oluştur menü öğesini kullanmamız gerektiğini düşünüyoruz. "Akıllıca" Proje Gezgini'nde gösterilmez, çünkü geliştiricilerin // üstbilgideki yorumu okumak ve dikkate almak için güvenmezler. Bu dosya otomatik olarak oluşturulur ve düzenlenmemelidir.

Çözüm 1 - Eski Yolu Kullanın

Bir veri modeli için tüm otomatik Codegen öğelerini tek bir ayarla devre dışı bırakabilirsiniz :

  • Sorunun Hedefin Derleme Aşamalarını açın ( Proje Gezgini'nde projeyi seçin, sonra görünen HEDEFLER listesinden sorunlu hedefi seçin, sonra Derleme Aşamaları sekmesine gidin ).
  • Derleme Kaynakları girişini genişletin ve sorunlu veri modelini ( .xcdatamodelddosyayı) bulun.
  • Derleme listesinden silin
  • Veri modelinin Paket Kaynaklarını Kopyala listesinde bulunduğundan emin olun .

Çözüm 2 - Yeni Başlayanlar İçin Temel Veri Büyüsü

Burada, daha yeni bir yola girersiniz.

  • Veri modelinizi bu Derleme Kaynaklarında olduğu gibi bırakın .
  • Veri modelindeki her varlık Müfettişi olarak, set Codegen için Sınıf Tanımı .
  • Proje Gezgini'nde tüm Foo + CoreDataClass dosyalarını silin ve çöp kutusuna atın ve Foo + CoreDataProperties.m veya .swift dosyalarını Foo + MyProperties gibi bir adla yeniden adlandırın .
  • Her Foo + MyProperties.m veya .swift dosyasında, Xcode tarafından oluşturulan özellikler varsa, Codegen tarafından oluşturulan gizli dosyalarda olacağı için bu özellikleri silin .

Bu çözümle, sınıf tanımlarınız her derlemedeki veri modelinden otomatik olarak oluşturulur. Onları bile göremezsiniz. Öyle Çekirdek Veri Magic , yeni başlayanlar için güzel ve basit.

Çözüm 3 - Çoğu Gerçek Dünya Uygulaması için

Ancak, gerçekten yönetilmeyen özellikler eklemek istiyorsanız, Çözüm 2 iyi değildir. (Objective-C, kategorilere özelliklerin eklenmesine izin vermez ve Swift, depolanan özelliklerin uzantılara eklenmesine izin vermez.) Bu nedenle, çoğu gerçek dünya uygulamasında, muhtemelen Çözümler 1 ve 2'nin yarısına gitmek istersiniz…

  • Veri modelinizi Derleme Kaynakları listesinde bırakın
  • Veri modelindeki her varlık Müfettişi olarak, set Codegen için Kategori / Uzatma .
  • Proje Gezgini'nde tüm Foo + CoreDataClass.m veya .swift dosyalarını silin ve çöpe atın ve gelecekteki karışıklığı azaltmak için Foo + CoreDataProperties.m veya .swift dosyalarını yalnızca Foo.m veya .swift olarak yeniden adlandırın .
  • Her bir Foo.m veya .swift dosyasının kendi yönetilmeyen özelliklerinizi ekleyebileceğiniz sınıf tanımını içerdiğinden emin olun .

(Positron tarafından verilen cevaba teşekkür. Burada cevabım Positron'ın cevabının (benim Çözüm 1) neden çalıştığını açıklıyor ve Çözüm 2 ve Çözüm 3'ü ekliyor.)


bu benim için çalıştı. harikasın!
Srujan Simha

Güzel cevap. Sadece eklemek istediğini kopyala 'Ürün> Build Klasör temiz' kullanarak çoğaltılmış gizli dosyaları temizlemek için Codegen el ile / hiçbiri alınan bir yorum buradan .
Kuşkusuz

21

Sorunumu çözen bir seçenek, derleme sistemini eski derleme sistemine dönüştürmektir. Lütfen Xcode 10 ve sonraki sürümlerinde aşağıdaki adımları izleyin.

Burada sorun ve çözümü hakkında ayrıntılı bir makale yazdım. Xcode Hatası: Birden çok komut üretir

resim açıklamasını buraya girin

resim açıklamasını buraya girin


1
Hayatımı kurtardı. Mükemmel çalıştı.
Reinaldo

2
Bu cevap Xcode içinde React Native ile yaşadığım 12 sorun gibi tek elle düzeltildi. Teşekkür ederim!
Chris Gilardi

19

Benim durumumda PDFGenerator bir info.plist dosyası üretiyordu, sadece sildim.

resim açıklamasını buraya girin


18

Aynı sorunu yaşadım, ana uygulamada bir tane daha yardımcı uygulamam vardı ve bunu kaynağa kopyaladım. Benim durumumda çözüldü: -

1) Hedef -> 2) Aşamaları Oluşturma 2) Dosyayı Kopyala (n öğe) 3) Dosyayı Kopyala'yı kaldırın.

Yardımcı uygulaması otomatik olarak Xcode 10.0'a kopyalandı.

resim açıklamasını buraya girin


3
Dosyaları kopyala + Paket Kaynaklarını Kopyala silinmesine yardımcı oldu.
Oleksandr

Bu benim için küçük bir değişiklikle çalıştı - Benim durumumda, kopya dosyaları adımında birden fazla dosya vardı, bir şekilde aynı dosya adları pakete birkaç kez / iki kez kopyalandı - hataya neden oldu: tek bir satırın silinmesi satırı vurgulamanızı gerektiriyor / hatada şikayet edilen adı filtreleyin ve tüm kopyalama dosyaları adımını silmek yerine bir satırı eksi işareti (her zaman alt satırda) ile silin.
AztecWarrior_25

16

Burada önerilen çözümlerin hiçbiri benim için işe yaramadı. Bu özellikle CocoaPod'lardan kaynaklanıyordu. Daha önce Cocoapods 1.3.1 kullanıyordum. 1.5.3 sürümüne yükseltmek sorunu hemen çözmedi.

İzlediğim adımlar:

  1. Podfile.lock dosyasını silin
  2. Bölme dizinini sil
  3. Türetilmiş Verileri Sil ve Temizle
  4. Xcode'dan çık
  5. CocoaPod'ları 1.5.3'e güncelleyin
  6. Çalıştırmak pod install
  7. Açık çalışma alanı ve derleme

5
CocoaPods 1.5.3 (sudo gem install cocoapods) olarak güncelleniyor ve çalışıyor (pod install) benim için çalışmasını sağlamak için yeterliydi. Teşekkürler!
mikemike396

Yukarıda recommened bazıları yaptım ama bu benim için çözüldü sadece biriydi. Teşekkürler
Almeida

Bu da benim için çözdü. Eski yapı çözümünden daha iyi olduğunu düşünüyorum çünkü aslında konuyla ilgileniyor.
MateusK

1
Bu benim için çalıştı, ama aynı zamanda install! 'cocoapods', :disable_input_output_paths => truepod dosyamın üstüne eklemek zorunda kaldım. Ayrıca, kapsüllerinizi güncellemek istemiyorsanız - podfile.lock dosyasını silmeyin; tüm bölmeler geçerli sürümlerine yüklenir.
DoesData

11

Başlamadan önce, projemin Carthage'ı bağımlılık yöneticisi olarak kullandığını unutmayın.

Buradaki mevcut cevapların hiçbiri sorunumu çözmedi. Sorunu benim için çözen şey şuydu.

İlk olarak, yapı hatasının özellikle bir çerçeveye işaret ettiğini fark ettim. Sonra, bu çerçeve için Uygulama Hedefi> Fazlar Oluştur'u filtreledim. Bu çerçevenin "İkili Kitaplıklarıyla Bağlantılandır" ve "Çerçeveleri Göm" de bulunduğunu fark ettim. "Çerçeveleri Yerleştir" altında listelenen çerçevelerin hiçbirinin Carthage tarafından yönetilemediğini belirterek, söz konusu çerçeveyi "Çerçeveleri Yerleştir" den kaldırdım. Daha sonra projemi yeniden inşa ettim ve söz konusu çerçevenin etkinleştirdiği işlevsellik de dahil olmak üzere her şey iyi çalışıyor.


1
PODS kullandım. Embed Frameworks uygulamasından her şeyi kaldırmak işe yaradı. Temiz ve hiçbir hata ile yeniden. Eski çözüm de işe yarıyor, ancak eldeki sorunu çözmüyor (bunu okuyan herkes için). Xcode 10.2, cocoapods-1.6.1'deyim.
Nadine Rose

1
Carthage kullanıyorum ve bu benim için düzeltildi!
Devin B

CocoaPod'ları da kullandım. Çerçeve geliştirme kapsülü olarak bağlıdır. "Embed Frameworks" boş ve hala bu sorunu
yaşıyor

11

Adımlar:

  1. Xcode Dosyasına Git
  2. WorkSpace Ayarları için Tıklayın
  3. Sistem Oluşturma Eski Derleme Sistemi Olarak Seçme

4
Bu durumda Xcode projede bir sorunu işaretliyor, bu nedenle eski derleme sistemine geri dönmeniz şimdilik gizleyecektir. Xcode'un bu tür sorunları bildirmesi kasıtlıdır ve sorunu düzeltmek en iyisidir. Daha fazla bilgi için lütfen help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 adresine bakın .
Rick Ballard

Bu benim için çalışıyor. Ürün adını değiştirmek olmaz. Ürünüm yarı objektif-c kodu ve hızlı kod ile karıştırılır. Benim sorunum "Birden fazla komut swiftmodule üretmek"
wzhang84

10

Tüm bu seçeneği deneyin, bu 3 seçenekten herhangi biri sizin için çalışacaktır

Option 1: Remove all files from

Hedef >> Yapı Aşamaları >> Kaynakları Derleme

Hedef >> Yapı Aşamaları >> Paket Kaynaklarını Kopyala

Option 2: Change the build system

Xcode-> Dosya-> Proje Ayarları-> Derleme Sistemi -> Eski Derleme Sistemi

Option 3: remove and update existing pod

pod önbellek temiz PromisesObjC
pod önbellek temiz PromisesSwift
cd [your_project_dir]
rm -rf Pod /
rm Podfile.lock
pod güncelleme

I hope this will help you, Happy coding :-)

-1. Hayır, "kesin olarak" çalışmıyor. Derleme kaynaklarını ve paket kaynaklarını kopyalamanın anlamı nedir ?! Proje, kod ve kaynakları derlemeden çalışmaz.
Luten

9

Bu yüzden yaşadığım sorun, yanlışlıkla Info.plist'i proje ayarlarına -> Derleme Aşamaları -> Paket Kaynaklarını hedefim için kopyalamış olmamdı.


Bu hata benim için de tam bir çözümdü, çünkü bu hata Xcode 10'da tflite_camera_example'yi çalıştırmaya çalışırken meydana geldi
zai chang

9

Bu sorun, uygulamaya SDK'ların Fabric paketinin ikinci bir bölümünü ekledikten sonra ortaya çıktı.

Aslında olan şey, GoogleUtilies Framework'ün Pods projesine iki kez eklenmiş olmasıydı

GoogleUtilities.framework için iki giriş

Bu, Xcode 10'dan önce iyi olurdu, ancak Xcode 10, bir dosyanın iki eylemi varsa (bu durumda bir kopya işlemi) şikayet eder.

İkinci çerçeveyi kaldırmak güvenlidir.


Benim için de aynı, ancak Carthage'i tüm .frameworks'lerini kütüphaneler bölümüne sürükleyerek kullanıyor
Ronaldo Albertini


Sana mirası değiştirmeden, bu nasıl düzeltmek için söyler misiniz, bu durumla karşı karşıyadır am
Harikarthick K

9

İşte başka bir çalışma çözümü: (Özel Podlar kullanıyorsanız)

  • Ekran görüntüsünde vurgu olarak kenar çubuğundan "Bölmeler" i seçin.
  • Yapı Aşaması'na tıklayın. "Üstbilgiler" bölümünü genişletin. Genel, Özel, Proje olmak üzere 3 seçenek vardır
  • Genel'i genişletin ve yinelenen dosyalar olup olmadığını kontrol edin. Onu kaldır. YAPILAN !!

resim açıklamasını buraya girin


bu yanıt, (özel) kapsülün soruna neden olması durumunda da bir çözüm olarak görülmelidir!
MkaysWork

Ayrıca tüm * .plist dosyalarını buradan kaldırabilirsiniz. Özel kapsüller için çalışıyor gibi görünüyor.
Amit Ahire

8

Bir sürü Multiple commands produceuyarı aldım - tek bir hedefte info.plist çoğaltma ile sınırlı değil. Yerelleştirilmiş kaynaklar ve dize dosyaları, başlıklar vb. Dahil

Çözüm: Hedef üyelikteki tüm kopyaları kaldırın.


Ana uygulamanın infoplist.strings dosyası ile aynı dizine kopyalanan kendi infoplist.strings dosyası ile bir izleme hedefi vardı çünkü bu hatayı vardı. Her ikisi de inşa edilirken aynı yerde olurlar.
Lyck

7

İki farklı hedefte aynı ada sahip bir dosyam olduğunda bu sorunu yaşadım. Nedense bu dosyalardan biri her iki hedefin bir parçası vardı. Temelde iki dosyam vardı. Ve bu dosyaların ikisi de tek bir hedefe aitti.

Bir hedefin hedef başına yalnızca bir dosya adına sahip olması mantıklıdır, bu nedenle ana hedefle ilgili olmayan dosya için hedef üye kutusunun işaretini kaldırmak sorunu çözdü.


7

Carthage ve Xcode 10 kullanıyorum.

Benim Çözümüm -> Proje -> Hedef -> Genel ->

Kartaca ile eklenen Çerçeveleri "Gömülü İkili Dosyalar" dan kaldır

Genellikle uygulama mağazasının mimarisini çıkarmak için Yapı Aşamalarına bir komut dosyası eklemeniz gerekir.

Xcode 10'da komut dosyası her zaman çağrılır. Böylece çerçeveleri doğru yere kopyalar ve bunları Genel Sekmesine eklemeniz gerekmez.

Not: ayarlanmamışsa -> Derleme Ayarları -> Arama Yolları -> Çerçeve Arama Yolları -> Kartaca ile eklenen Framework u yolunu ayarlayın .... örn. "$ (Project_dir) / Carthage / Yapı / iOS"


7

Bu hatanın Codegen'in Manual / None olarak ayarlanmadığı CoreData modellerinin otomatik olarak oluşturulmasından sonra üretilebileceğini belirtmek gerekir.

Bunu Xcode 10'da düzeltmek için xcdatamodeId dosyanıza çift tıklayın ve varlıklarınızın her birini seçin ve Data Model Inspector'ınızdaki Class altında Codegen'i Manual / None olarak ayarlayın.


Evet! Ve ayrıca bir "Derleme Klasörü Temizle" yapın.
Dirk

6

Benzer bir sorun vardı ama .swiftdoc dosyalarıyla.

Projede uzantılar ve birim test hedeflerim var. Uygulama ile aynı "Ürün Modülü Adı" na (Yapı Ayarlarında PRODUCT_MODULE_NAME) sahiptiler. İsimleri yaptıktan sonra benzersiz bir konu gitti.


6

Xcode 10'a geçme, hatalar

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist':

aşağıdaki gibi çözülebilir:

Adresine gidin Xcode->File->Workspace/Project Settings-> Build System -> Legacy Build System.


2
Bu durumda Xcode projede bir sorunu işaretliyor, bu nedenle eski derleme sistemine geri dönmeniz şimdilik gizleyecektir. Xcode'un bu tür sorunları bildirmesi kasıtlıdır ve sorunu düzeltmek en iyisidir. Daha fazla bilgi için lütfen help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 adresine bakın .
Rick Ballard

Bu benim için yaptı, efendim bir
cömert

6

Proje Derleme Aşaması'na gidin ve Derleme Kaynaklarından info.plist'i kaldırın. Bu sorunu ortadan kaldıracak ve proje tekrar aktif olacaktır.

resim açıklamasını buraya girin


6

CocoaPod'larımdan biri çıkarıldı ve soruna neden oldu. Bir bakla güncelleme yaptı ve iyi çalıştı.

Bunun LivePerson SDK'sı olabileceğine inanıyorum


benim için sadece 'pod kurulum' yapmak zorunda kaldım
Pnar Sbi Wer

6

Benim sorunum Xcode 10 Mojave çalıştırmak ve XCode 10 güncellemeden önce yazdım birim testleri çalıştırmaya çalışırken oldu.

Benim durumumda, TestTargethedefimi çalıştırırken bu sorunu yaşadım . Çözmek için:

  • Hedef bağımlılıklardan birini silin (in TestTarget > build phases > Target Dependencies)

çünkü iki hedefim daha vardı TestTargetve her ikisi de aynı komut dosyasını çalıştırıyor ve belirli bir noktada dosya oluşturuyor / kopyalıyorlardı.

Ve sözü edilen ile uyuşmayan bu Xcode 10 Yapı Sistemi Sürüm Notları burada :

Derlemedeki herhangi bir dosyanın birden fazla derleme komutu tarafından üretilmesi bir hatadır. Örneğin, iki hedefin her biri bir kabuk komut dosyası aşamasından aynı çıktı dosyasını bildirirse, çıktı dosyasının bildirimini tek bir hedefte hesaba katın.

Xcode 10.1'den 10.2'ye güncelledikten sonra yeni GÜNCELLEME

Xcode 10.2'ye güncelledikten sonra benzer bir sorun tekrar ortaya çıktı. Projeye göre birden fazla hedefim var: Target1ve Target2bu sorunu şu şekilde çözdüm:

  • gezinme Edit Scheme > Buildve
  • inşa edilmesini hedef kaldırmadan: onay kutusunu işaretini Target1altında Testben biliyordum beri Target2ithalTarget1

Ayrıca burada not etmek için, Target2onay kutusunun altında kalması gerekirTest


6
error: Multiple commands produce '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings':
1) Target 'chat21' (project 'chat21') has copy command from '/Users/KunshtechNew/Downloads/chat21-ios-demo-master/TildeskWidget/Chat21Core/Base.lproj/Chat.strings' to '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings'
2) Target 'chat21' (project 'chat21') has copy command from '/Users/KunshtechNew/Downloads/chat21-ios-sdk-master 2/Chat21Core/Base.lproj/Chat.strings' to '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings'

Bu sorundan kurtulmak için 2 farklı çözüm olabilir:

Çözüm 1

Biz aynı hatayı başlamıştı görebileceğiniz gibi .. benim durumumda klasör ekstra bir kopyası yoktu Chat21Core içinde TildeskWidget da sadece hata okunabilir Yani .. olası çözümlerden birini sorununu yaratıyordu ..bu klasörü tamamen ve Projeden referans verilen ekstra bir kopya olup olmadığını bulmaya çalışın.

Çözüm 2

Farklı proje için aynı tür sorunlarla karşılaştığımda bulduğum bir başka basit çözüm. Bu kez farklı bir çözüm uygulamak zorunda kaldım.

  • pod deintegrate projeden.
  • Çalışma alanı dosyasını ve pod.lock dosyasını proje klasöründen kaldırın.
  • Tekrar pod install ve projeyi inşa etmeye çalışın.

Umarım bu senin için işe yarayabilir ..

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.