Xcode 4: Derleme Başarısız, Sorun Yok


91

Uygulama simülatörde iyi çalışır, derler ve çalışır.

Cihazımı bağladığımda (iOS 4.3 çalıştıran iPhone 3GS) ve iPhone'u hedeflediğimde sonuç "Derleme başarısız" ve "Sorun yok" oluyor.

Derleme sonuçları penceresine bakıldığında, her şey yeşildir ve Derleme başarısız bildirimi dahil olmak üzere bir onay işareti vardır .

Transkriptlerin genişletilmesi hata göstermez.

İmzalama veya sağlama hatası olasılığını dışlayamam, ancak bana bu hataları verdi, düzelttim ve şimdi bana herhangi bir hata veya sorun vermiyor, sadece "Derleme başarısız oldu; Sorun yok"

  • Derleme herhangi bir sorun olmadan hangi şekillerde başarısız olabilir?
  • Herhangi bir sorun olmadan başarısız olmasının nedenini bulup bulamayacağımı görmek için derleme çıktısını izleyebileceğim bir yol var mı?
  • Sorunlar listesinin dışında üretilen yapı çıktısı var mı?
  • Uygulamayı cihazıma yüklemeye çalıştığı yapı penceresinde görmüyorum - bu çıktı başka bir yerde mi?

Bu şu anda benim başıma geliyor! Çok sinir bozucu!
tallen11

1
Bence stackoverflow.com/a/28064945/1709587 genellikle bir tür hata mesajı gösterir; diğer cevaplarda yer alan çeşitli tahminlerden çok daha kullanışlıdır ve bu durumu gidermeye çalışan herkes için başlangıç ​​noktası olmalıdır. Sayfanın en üstüne getirmeyi kabul eder misin?
Mark Amery

Yanıtlar:


76

Sorun gezgininde hiçbir hata olmadan 'Derleme Başarısız' mesajı alıyorum (yalnızca uyarılar). Rapor gezgini, hataları doğru bir şekilde görüntüledi.


4
Harika, bu benim hatalarımı gösterdi. Artık zamanımı boşa harcamayı bırakıp hatayı gerçekten çözebilirim :)
Daniel Ryan

Günümü kurtardı !! Teşekkürler
DZenBot

DerivedData'yı temizlemek zorunda kaldım + BitCode'u devre dışı bıraktım (her ihtimale karşı).
DevAndArtist

33

Paket tanımlayıcı için "Alt Çizgi" ve "Boşluk" vb. Mi kullanıyorsunuz?

İthalatlarınızdan birinde .h yerine .m kullanıyor musunuz? #import "Photo.h"


1
Hayır, paket kimliğimde boşluk veya alt çizgi kullanmıyorum.
Adam Davis

2
Teşekkürler! Benim için, Bundle tanımlayıcısında alt çizgiydi.
cocoapriest

Teşekkürler! Paket idetifier'im bazı nedenlerden dolayı boştu.
tallen11

2
Teşekkür ederim. Alt çizgiyi kaldırdıktan sonra, projem gayet iyi derlendi. Kör edici öfke, rahatlama ve minnettarlığın garip bir bileşimini hissediyorum. PROJE ADINDA BİR ALTI PUANI KULLANMAK İÇİN NASIL BÖYLE BİR SAHNE OLABİLİRİM?!?
Tina D.

1
VAOV! Ben de o sorunu yaşadım. Altı çizili. Dash olarak değiştirildi ve her şey yolunda. Bu kesinlikle ABSURD APPLE! İOS'u seviyorum. Apple'ın uygulamanızı test etmek için bir cihaza getirmek için kullandığı karmaşık süreçten nefret ediyorum. Her neyse, bu düzeltme için teşekkürler!
DA.

21

Denediğim ilk şey, her şeyi (Ürün / Temizleme menüsü) temizlemek ve yeniden oluşturmaktır. Zaten denemiş olabilirsiniz.

Günlük Gezgini'nde tam derleme çıktısını bulacaksınız (ve oluşturma sırasında izleyebilirsiniz). Bu, Çalıştır ve Oluştur düğmelerinin hemen altındaki küçük simgelerin en sağındaki simgedir.

Derleme (ve hata ayıklama) günlük dosyaları / Users / you / Library / Developer / XCode / DerviedData / YourProject-abcdefg / Logs / Build (ve sırasıyla ../Debug) dizininde bulunur.

Uygulamanızın cihaza yüklenmesi için herhangi bir çıktı olduğunu sanmıyorum.


Evet, temizlik yardımcı olmuyor. Günlük gezgini ve ilgili oturum günlüğündeki derleme çıktısını kullanıyorum ve inceliyorum. Gösterdiğiniz günlük dosyaları ikili gibi görünüyor, bu nedenle onlara sahip olduğum tek erişim günlük gezgini ve oturum günlüğü aracılığıyla görünüyor.
Adam Davis

Günlük Gezgini ile ilgili olarak, benim durumumda gelecekte olan bir günlüğüm vardı (bazı testleri çalıştırmak için bilgisayardaki tarihi 1 gün öncesine değiştirdiğim için). Görünüşe göre xcode en son günlüğü kullanıyor (inşa tarihine göre). Bunu düzeltmek için (xcode 5'te), proje için türetilen tarihi sildim ve xcode'u yeniden başlattım, böylece gelecekteki günlükler kayboldu ve Issue Navigator doğru uyarıları ve hataları göstermeye başladı.
alex-i

19

Hedefinizin Ürün Adında boşluk var mı?

Xcode'un önceki sürümlerinde bunun bir sorun olmadığını biliyorum, ancak Xcode 4'te bir şeyi kırdıkları için artık çalışmıyor gibi görünüyor (DerivedData yolu ile ilgili bir şey olduğunu sanıyorum). İDevice'inizin Başlatma Çubuğunda göründüğü şekliyle uygulamanızın adına, içindeki CFBundleDisplayNameanahtarı Info.plistdışında başka bir şeye ayarlayarak bir boşluk ekleyebilirsiniz ${PRODUCT_NAME}.


Hayır, uygulama adının tamamı tek bir kelimedir, özel karakterler, boşluklar veya başka bir şey yoktur.
Adam Davis

Bu benim için yaptı. Dostum, Apple, geliştiricinin platformlarına geçmesini zorlaştıracak yeni yollar buluyor. Zihin üfleme hatası. !!
CF_Maintainer

Ürün adında da alt çizgi olamaz
afrederick

13

Yerel Cocoa Heads posta listelerinden birinde, küçük bir varsayılan örnek proje denemem için teşvik edildim - tedarik ve imzalamamın çalıştığından emin olmak için başlangıçta yapmam gereken bir şeydi. Cihazımda sorunsuz bir şekilde oluşturuldu ve çalıştı, bu nedenle tüm işaretler kodumla veya projeyle ilgili bir soruna işaret ediyor.

Mevcut projeden bazı şeyleri yeni örnek projeye atacağım ve benzer şekilde başarısız olursa, sorunu daha küçük bir ilgi alanına daraltabilirim.


Uygulamanın ana işlevini yeni bir projeye ekledim ve sorunsuz çalışıyor. Bu sefer farklı yaptığım tek şey, evrensel bir ikili ayarlamamıştım (şu anda yalnızca iPhone) ve portre yönü hariç her şeyi kapattım. Anlayabildiğim kadarıyla diğer her şey aynıdır, ancak daha sonra buna daha fazla bakmaya karar verirsem, proje dosyalarını değiştireceğim ve başka nelerin farklı olabileceğini göreceğim.

Bu yüzden benim için çözüm, yeni bir projeye başlamak ve eski projeden tüm işlevselliği yeni projeye taşımaktı.

Paul'ün başka bir cevapta önerdiği gibi hedefi yeniden oluşturmak da onu düzeltebilirdi, ancak böylesine basit bir projeyle sıfırdan yeniden başlamak benim için kolaydı.


Ben de bu problemi yaşadım. Sertifika / ön hazırlık profilimi kurmadan önce yeni bir Xcode4 projesi oluşturmuştum ve herhangi bir sorun olmadan hata veriyordu. Kurulduktan ve Xcode'u yeniden başlattıktan sonra yeni bir proje başlatabildim ve sorunsuz çalışabildim. (Mevcut bir projeye pek yardımcı olmadım biliyorum.)
zekel

@zekel İlginç! Sertifikaları alma ve sağlama işlemlerini tamamlamadan önce projeyi simülatörde de çalışır hale getirdim. Yükseltme sırasında provizyonlarının süresinin dolmasına izin vermeyen kişilerin o zaman bu sorunu yaşamayacağını hayal ediyorum ...
Adam Davis

7

Ben de aynı sorunu yaşadım ve başka birinin önerdiği gibi paket tanımlayıcısıyla ilgisi vardı. Kısa süre önce onu bir test olarak değiştirdim ve içine bir yıldız işareti koymuştum. Bunu düzelttim ve hedefi temizlemek zorunda kaldım ve sonra işe yaradı.


Benim de bir yıldız işaretim vardı ve onu kaldırmak sorunumu çözdü. Bundan bahsettiğiniz için teşekkürler.
SteveB

Joker karakter tanımlayıcısını kullanmak (örn. Com.developername. *) Benim için de sorunun nedeniydi. Varsayılan com.developername konumuna geri döndürmek. $ {PRODUCT_NAME: rfc1034identifier} sorunu çözdü. Şu anda Xcode 4.0.2
GnarlyDog'u

7

Bu, kullanılmayan bir hedefi sildikten sonra başıma geldi. Görünüşe göre Xcode kalan hedefimin CFBundleIdentifier'ına (com.company.etc) bir boşluk koydu. Info.plist'i kaldırmak için harici bir metin düzenleyicisiyle düzenlemek zorunda kaldım ve sonra iyi çalıştı.


Bu bana da oldu. hedefler altında özet, tanımlayıcı, başlangıçta bir boşluktan kurtuldum. Sheesh elma. Kaç tane aldatma yaratabilirsin?
fregas

Paket Tanımlayıcı benim sorunumdu. Bu, Info.plist dosyasındadır.
bentford

7

Bir çalışma alanına birden fazla proje ekleyerek oynuyordum ve bu sorunu aldım. Projelerden birinde basit bir kütüphanem var ve inşa ediyordum ve test etmek için iOS pencere tabanlı bir hedef ekledim. Yeniden adlandırmak için bunun için yaptığım ilk hedefi sildim. Bunu okuduktan sonra xcuserdata'yı .xcodeproj paketinin içinden kaldırmayı denedim ve bu sorunumu çözdü. Umarım bunun bir başkasına yardımı olur. Xcode 4.1'i OS X 10.7.1'de çalıştırma.


7

Tüm bu cevaplara rağmen gittikten sonra, aynı sorunu yaşadım, ama benim için farklı bir şey çözdü.

Sorun:

Yeniden düzenleme sonrasında derleme sorun olmadan başarısız oldu. (Düzenle -> Refactor -> Yeniden Adlandır kullanarak bir sınıfı yeniden adlandırın).

Şimdiye Kadarki En Saçma Çözüm:

Go refactor (yeniden adlandırın) başka bir şeyi (-_- ") yapın. Bunu yaptıktan sonra, Xcode'un tüm uygun dosyaları yeniden adlandıramaması ve hataları göstermemesi hatasıydı. Sonra, başka bir yeniden düzenleyiciden sonra, önceki yeniden düzenleyiciden gelen hatalar belirdi .


bu kadar ! bir mülkü manuel olarak yeniden adlandırdım ve bu soruna neden oldu. teşekkür ederim
Laszlo

6

Ben de aynı sorunu yaşadım. Düzeltmeye çalışıyordum, bir xcode çöktü. Yeniden açtım ve gayet iyi çalıştı. Belki şanslıydım falan? Her neyse, şimdi çalıştığı sürece neyin yanlış olduğu umrumda değil


6

Paket tanımlayıcısını değiştirdiyseniz ve projeyi temizlediyseniz ancak bu da işe yaramadıysa, / Kullanıcılar / YOUR_USERNAME / Library / Developer / Xcode / DerivedData dizinini boşaltmayı deneyin.

Benim için çalışıyor.


6

Benim için yapı, Sorun Gezgini'nde herhangi bir hata göstermeden başarısız oldu. Ancak, Log Navigator'da, bu derleme oturumunda hatayı görebiliyordum. Benim durumumda, hata bildirilmemiş bir sabitti. Gerekli başlık dosyasını içe aktardım ve sorun çözüldü. Sorun Gezgini'nde bu hatanın neden görünmediğinden emin değilim.

Başka bir değişkenin adını kasıtlı olarak değiştirerek bu davranışı yeniden oluşturmaya çalıştım. Bu sefer hata, Sorun Gezgini'nde görüntülendi. Bu nedenle, önceki hatanın Sorun Gezgini'nde neden görünmediğinden hala emin değilim.

Bu yardımcı olur umarım.


6

Yukarıdaki çözümler benim için işe yaramıyor.

Çözümüm, projeyi başka bir klasöre taşımak.

Yapı hataları daha sonra normalde olduğu gibi görünür.


4

Yapı klasörünüzü temizlediniz mi? Ürün menüsüne gidin, Seçenek tuşunu basılı tutun ve "Yapı Klasörünü Temizle…" öğesini seçin.


Bu, sonuçları değiştirmedi.
Adam Davis

Değişiklik
yapılmadı

4

Sorunun ne olduğunu biliyorum: Info.plist -> Bundle Identifier'da: '_' kullanamazsınız. Örneğin, com.mycompany.My_app geçerli değil, ancak com.mycompany.My-app tamam.


3

Mevcut bir projeyi xcode 4'te derlemeye çalışırken tam olarak aynı sorunu yaşadım ve neredeyse projeyi yeniden yaratmanın acısını yaşadım.

Bununla birlikte, son bir hendek denemesinde info.plist dosyasını, "belge türleri", "url türleri", "Dışa Aktarılan Tip UTI'ler" ve "İçe Aktarılan Tür UTI'ler" için ek etiketleri içeren yeni oluşturulmuş bir dosya ile değiştirdim

Bu işe yaradı ve projem için şaşırtıcı derecede basit bir düzeltme oldu.


3

Bu bana UnitTest hedefimle oldu. Çalışıyordu ve sonra durdu. Dosya sistemindeki bir .h / .m dosyasını silmiş olduğumu ve proje dosyasından kaldırmamayı unutmuştum, ancak XCode bunu bildirmedi.

Projeyi komut satırında çalıştırarak anladım ve bu bana hatayı söyledi:

/usr/bin/xcodebuild -target "UnitTest"

Bunu proje dosyanızın olduğu klasörde çalıştırın ve UnitTest'i hedefinizle değiştirin - veya varsayılan hedefi oluşturmak için bir hedefi iletmeyin.


3

Bende de bu sorun vardı ama nedeni farklıydı:

İçinde bir proje olan bir çalışma alanım var. Bu projede Xcode projesini projeme ekleyerek dahil edilen bir framework kullanıyorum. Çerçevenin başlık dosyasını önek başlığıma (.pch) aktardım. Bu aptalcaydı.

Çözüm, çerçeve başlık dosyasının #import'unu önek başlık dosyamdan kaldırmak ve yalnızca gerektiği yerde eklemekti.


3

Cihaz için oluştururken burada da aynı sorun var. Derleme başarısız oldu, ancak günlüğümün tamamı yeşil onay işaretleri. Derleme klasörünü temizlemek / silmek onu düzeltmez. Başka bir yerde birinin hedefi silerek ve yeniden oluşturarak bu sorunu çözdüğünü okudum, ancak XCode 4'te bunu nasıl yapacağımı henüz tam olarak çözmedim.


Geçici çözümüm, XCode 3.2.6 w / iOS 4.3'ü indirip kurmak oldu. Apple'ın ayrıca iOS 4.3'ü içeren ve XCode 4'e yükseltmeyi ertelemenize izin veren bir XCode 3 sürümü yayınladığını fark etmedim. Build Failed sorunu hakkında Apple'a bir hata raporu gönderdim.


Apple'dan udpate:

Bu projeyi oluşturduğumuzda - Xcode 4.0 sonrası sürümde olsa da - derleme günlüğündeki ProcessProductPackaging adımında aşağıdakileri görüyoruz:

(null): hata: CFBundleIdentifier 'com.yourcompany.Magic_Carpet' geçersiz karakter '_' geçersiz paket tanımlayıcısı 'com.yourcompany.Magic_Carpet' içeriyor

ProcessProductPackaging kodu oldukça yakın bir zamanda elden geçirildi, bu yüzden Xcode 4.0'da düzgün şekilde hata yaymadığından şüpheleniyoruz. Kendi yapınızın transkriptine bir göz atın ve eğer öyleyse, bu muhtemelen Xcode'un gelecekteki bir sürümünde düzeltilecektir (bir düzeltme yayınlanana kadar daha fazla yorum yapamayız).

Alt çizgiden kısa çizgiye geçtim ve sorunu çözdüm.


2

Aynı şey bana farklı bir sebeple oldu.

Entitlements.plist dosyamdan get-task-allow öğesini kaldırarak boş bir plist bıraktım. Derleme ayarlarında hala Entitlements.plist dosyası Entitlements dosyam olarak belirtildi. İPhone'um bağlıyken iOS cihazında Ad-Hoc derleme ayarlarımı kullanarak çalıştırmayı seçtim ve bu hatada açıklanan davranışı gördüm. Get-task-allow back eklendiğinde sorunu çözdü.


2

Bu sorunun birçok olası nedeni var gibi görünüyor. Benimki öyle çıktı

Hedefim, var olmayan bir ön hazırlık profilini kullanmak üzere ayarlandı.

Projemi yeni bir profil kullanacak şekilde ayarladım ve eskisini sildim. Hedefin, hâlâ eski (artık silinmiş) profile ayarlanmış olan kendi sağlama profili ayarı olduğunu fark etmemiştim.


2

Yukarıdakilerin TÜMÜNÜ başarılı bir şekilde denedikten sonra başka bir cevap eklemek için: MacBook'u yeniden başlatmak zorunda kaldım, yalnızca XCode'u kapatmakla kalmadım ve bu benim için çalıştı. Localizable.strings'de daha önce göstermediği bazı hataları gösteren XCode ile sonuçlandı.

umarım yardımcı olur


Benzer bir şey aldım, Xcode 5.0.2: Localizable.strings'imden birinde, Xcode'un inşa sırasında göstermediği bir sözdizimi hatası vardı.
Bart van Kuik

2

xcschemes'deki proje şemalarındaki tüm Spaces'ı temizliyorum ve bu sorunu çözüyor. Lanet Apple :( AppCode ROCKS!


1

bkz: http://developer.apple.com/library/ios/#DOCUMENTATION/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html

UTI Karakter Kümesi Tek tip bir tür tanımlayıcı, genellikle ASCII karakter kümesindeki karakterleri içeren bir Unicode dizesidir. Ancak, ASCII karakterlerinin yalnızca bir alt kümesine izin verilir. Latin alfabesini büyük ve küçük harf (A – Z, a – z), 0'dan 9'a kadar rakamlar, nokta (“.”) Ve kısa çizgi (“-”) kullanabilirsiniz. Bu kısıtlama, RFC 1035'te belirtilen DNS adı kısıtlamalarına dayanmaktadır.

Tek tip tip tanımlayıcıları ayrıca U + 007F'den büyük Unicode karakterlerinden herhangi birini içerebilir.

Önemli: Bir UTI dizesinde görünen herhangi bir geçersiz karakter - örneğin, alt çizgi ("_"), iki nokta (":") veya boşluk ("") - dizenin geçersiz bir UTI olarak reddedilmesine neden olur. API katmanında, geçersiz UTI'ler için hata oluşturulmaz.


1

Paketin adıyla ilgili bir sorun yaşamadım, bu nedenle önerilen çözümler benim için işe yaramadı. Son olarak, derleme için Kodlama işaretini ayarladım, sonra projeyi kapattım, ardından düzenleyicideki temel hazırlığı kaldırdım, ardından yeni temel hazırlığı indirip düzenleyiciye ekledim ve ardından bunları yapı için ayarladım. İşe yaradı.


1

Bu teknik bir cevap değil, muhtemelen sizin durumunuz için geçerli olmayan bir "kullanıcı hatası" cevabıdır. Bu benim başıma geldi ve araştırmam beni bu Soru-Cevap'a götürdü ve hiçbir işe yaramadı - ta ki hatamı fark edene kadar. Sorun Gezgini'nde, sorun olarak bildirilen hiçbir şeyle eşleşmeyen bir filtre ayarladım. Filtreyi temizlediğimde sorunlar görüntülendi.

Belirtilerin sizin sorduğunuzla aynı olduğuna dikkat edin ve kısa listede herhangi bir filtrelemeye ihtiyacım olmayacağından bu filtreyi ne zaman ayarladığımı (diğer gezinme görünümlerinden miras alınmalıdır) hiçbir fikrim yok.


1

Ben de benzer bir sorun yaşadım. Hiçbir yerde bir hata bulunamadı. Tüm ön hazırlık profillerimi silip yenilerini ekledim.

Ardından cihazıma başka bir test uygulaması oluşturmayı denedim ve şu hata mesajını aldım:

Kod İşareti hatası: 'iPhone Developer: xxxxxx' sertifika kimliği, anahtarlıkta birden fazla kez görünüyor. Kod işareti aracı yalnızca bir tane olmasını gerektirir.

Bu yüzden Keychain'e girdim, aynı adı taşıyan birkaç süresi dolmuş sertifika buldum ve onları sildim ve bu hile yaptı.

Oldukça rastgele, ancak belki de benim yaptığım gibi cihaza başka bir uygulama oluşturmayı denerseniz, sorunu teşhis etmeye yardımcı olmak için benim yaptığım gibi bir hata mesajı alacak kadar şanslı olabilirsiniz.


1

Xcode'da Organizer'a gidin. Ve Proje Sekmesinde bu projeyi silin. Xcode'un türetilen verileri yeniden oluşturmasına izin verin, sorunumu tekrar çözelim.


1

XCode4.5'te benzer bir sorunla karşılaştım ve XCode uygulamam üzerinde çalışırken aniden çöktü.

Saatlerce aradıktan sonra, xcode çöktüğünde uygulamamdaki dosyamdan birinin silindiğini öğrendim.

Dosyayı Çöp Kutusu'ndan geri yükledim ve sorun çözüldü.


1

Kod imzalamadan bir Mac OS X uygulaması programlıyordum . Ne zaman "Yetki" bölümünde korumalı alan etkin, otomatik olarak açılır codesigning ve ben yeni bir yapı gelemedi.

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.