“Uyarı: iPhone uygulamaları, build config set ile bile bir armv6 mimarisi içermelidir”


332

Proje oluşturma ayarlarını değiştirmek zorunda olduğumdan beri bir süredir. Yeni bir SDK'ya geçtikten sonra geçici dağıtım yapılandırmamı oluşturmakta sorun yaşıyorum.

Derleme şu uyarı ve hatayı oluşturur:

uyarı: iPhone uygulamaları bir armv6 mimarisi içermelidir (geçerli ARCHS = "armv7")

iPhone / iPod Touch: uygulama yürütülebilir dosyasında gerekli bir mimari eksik. Aşağıdaki mimari (ler) den en az biri mevcut olmalıdır: armv6 (-19033)

Ancak projemde doğru şekilde ayarlandığımı düşündüm:

  • Mimariler: Standart (armv6 armv7)
  • Temel SDK: En son iOS (şu anda iOS 4.2 olarak ayarlı)
  • Geçerli Mimariler: armv6 armv7

alternatif metin

Tüm hedefleri temizledim.

Herhangi bir ipucu için teşekkür ederiz.


Mine, güncelleme alan eski bir uygulama ve iOS Dağıtım Hedefi <4.3 için de aynı hatayı veriyor! Benim çözümüm armv6 ile ilgili tüm referansları kaldırmak ve bunu> = 4.3 olarak ayarlamaktı. İşe yaradı.
Henrik Erlandsson

Ve şimdi şimdi bir rehaul var başka bir eski uygulama için aynı denedim ve işe yaramadı ... XCode 5 sorunu, Build Ayarları yanlış, öyle görünüyor.
Henrik Erlandsson

Yanıtlar:


418

Xcode 4.2 veya daha yenisini kullanıyorsanız aşağıdakileri deneyin:

  1. Proje adınızı (sol sütunda) ve ardından Hedef'i tıklayın:

    resim açıklamasını buraya girin

  2. 'Derleme Ayarları' sekmesini tıklayın (sağ sütunda):

    resim açıklamasını buraya girin

  3. "Mimariler" altındaki "Serbest Bırak" veya "Dağıtım" satırını tıklayın ve "Diğer ..." i seçin:

    resim açıklamasını buraya girin

  4. Görüntülenen açılır pencerede '$ (ARCHS_STANDARD_32_BIT)' adlı vurgulanan satırı çift tıklayın ve 'armv6' yazarak değiştirin. Ardından, popover'ın sol alt tarafındaki artı düğmesiyle yeni bir satır ekleyin ve 'armv7' yazın, ardından Bitti'yi tıklayın:

    resim açıklamasını buraya girin

Güncelleme: iPhone 5'i de hedeflemek için armv7'ler eklemelisiniz. (Ve artık armv6'yı desteklemeyen Xcode 4.5 veya daha yüksek bir sürümle inşa ediyorsanız armv6'yı bırakın.)

Bu kadar. Artık hata oluşturmadan derleyebilmeniz / arşivleyebilmeniz gerekir.

Hala çalışmıyorsa , info.plist dosyanızdaki "Gerekli Cihaz Özellikleri" altında armv6 ve armv7 için giriş eklemeyi öneren justinxreese'nin bu cevabına bakın .


3
Evet, Apple ARM6'dan uzaklaşıyor gibi görünüyor, bu yüzden bu Xcode 4.2 için gerekli bir adım gibi görünüyor. 4.2 şimdi herkese açık olmasına rağmen, gönderim sürecinin hala bir ARM6 derlemesi gerektirmesi garip ...
Jasarien

7
Mimari altında dağıtım satırı yok, bunun yerine "Release" satır var. nasıl yapılacağını bilmiyorum
OMGPOP

2
@ Let'sSpotIt Sadece Release satırınıza armv6 ve armv7 ekleyin. Ekran görüntülerimdeki proje, Xcode'un önceki bir sürümünden, dolayısıyla farklı Mimari adlarından içe aktarıldı.
Nick

2
Teşekkürler Nick. Ayrıca, Xcode 4.2'de oluşturulan yeni projelerin armv6 cihazlarını desteklemek için info.plist dosyalarının değiştirilmesi gerekebilir. Aşağıdaki ek cevabımı gör.
MattyG

1
@ İpucu için teşekkürler, ve benim için "Hedef" yerine "Proje" seçmek zorunda kaldı. "Hedef" oluşturma ayarlarından seçim yapmak benim için çalışmadı. neyse yardım için tekrar teşekkürler.
Prasad De Zoysa

62

"Yalnızca Etkin Mimari Oluştur" un işaretini kaldırırsanız, geçerli tüm mimarileri oluşturur.

Güncelleme : Bu, Xcode 4'ten itibaren geçerli değildir - Nick'in Xcode 4 ve sonraki sürümleri için talimatlarını izleyin.


11
Hata ayıklama sürümleri için EVET ve Sürüm sürümlerinde Hayır olarak ayarlayarak derleme sürelerinizi hızlandırabilirsiniz.
Billy Gray

59

Bu sorunu kabul edilen cevabı izledikten sonra bile yaşadım ve çalışmak için aşağıdakileri buldum:

Info.plist'inize Gerekli Aygıt Özellikleri için bir giriş ekleyin. Bu bir dizi olmalı ve iki girişi olacaktır.

  • Madde 0: armv6
  • Madde 1: armv7

Bunun gibi görünecek:

Gerekli cihaz özellikleri girişi


Bu çözüm diğer mimari uyarılarımı düzeltti, ancak yine de ilk uyarıyı alıyorum ve ayrıca "Hayır Aktif Mimari Oluştur" u "Hayır" olarak ayarladım
Dan F

önceki çözüm uygulanmadığı için benim için düzeltti. Bazı nedenlerden dolayı armv6 artık yapı mimarisi ayarlarımın altında gösterilmiyor: S
seeafish

Bu yukarıdaki nick yanıtı ile birlikte benim için düzeltti. +1
Saurabh Wadhwa

Bu seçeneği en yeni xCode sürümlerinde kaldırmalısınız, daha sonra derlenecektir. Her iki koyduğunuzda o zaman pratikte imkansız olduğu cihazınızdaki geçerli olabilmesi için her iki arcitectures gerektirecektir
Artem

XCode 4.5+ ile oluşturmak için armv6'yı gerekli cihaz özelliklerinden düşürmeniz gerekir.
Pulkit Goyal

26

Nick'in Xcode 4.2 hakkındaki cevabına ek olarak, info.plist dosyanızı da incelemeniz gerekebilir. Xcode 4.2'de başlatılan yeni projeler varsayılan olarak 'Gerekli Aygıt Özellikleri'nde' armv7 'belirtmiş gibi görünüyor. Armv6 çalıştıran cihazları (örneğin iPhone 3G) desteklemek istiyorsanız bunu kaldırmanız gerekir.

resim açıklamasını buraya girin

Armv7'yi ProjeAdı-Bilgi.plistinizdeki 'Gerekli aygıt özellikleri'nden silin.


21

Bir ios 6 güncellemesi

İOS 6 için Xcode 4.5.x'teki değişiklikler

  1. Xcode 4.5.x (ve üstü) armv6 ikili dosyaları oluşturmayı desteklemez.
  2. Artık iPhone 5 / armv7s desteği içeriyor.
  3. Xcode 4.5.x veya üstü ile desteklenen minimum dağıtım hedefi iOS 4.3'tür.

6

Ben de bu problemi yaşadım. Dağıtım hedefimi 4.3'e ayarladım ve sadece armv7 mimarisini bıraktım ve işe yaradı. Bu noktada neredeyse herkesin 5'i var, bu yüzden 4.3 iyi.


3

benim için her cevapta işe yaramıyor. ancak HEDEFLER> Mimariler> Hata Ayıklama'yı deneyin ve artı düğmesiyle yeni bir satır ekleyin ve 'armv6' (dışarıda ') yazın, sonra Bitti'yi tıklayın.

ve son olarak CMD + B'yi seçin ve PrjectName.app (Ürünler klasöründe) öğesini sağ tıklayın> Finder'da Aç> "PROJECT_NAME.APP" dosyasını sıkıştırın (Debug-iphoneos'da)> AppStore'a Yükle

resim açıklamasını buraya girin

bu benim ekran ayarım. resim açıklamasını buraya girin

projeyi dahil ettiyseniz lütfen hepsini yapılandırın. Yardımınızı umuyoruz.


1
Ayrıca işe yaramadan önce Armv6'yı Release Architecture üzerine koymak zorunda kaldım.
mil

3

Bu cevapların bir karışımını denedikten sonra, sonunda çalışmasını sağladım. Şu anda Apple'da çok kızdım. Bir saat daha beni boşa harcadılar. İşte benim yapılandırma.

resim açıklamasını buraya girin


2

Yukarıdaki tüm cevapları denedim, hiçbiri sorumu çözmedi. Bu yüzden yeni bir proje oluşturuyorum ve derleme ayarlarını tek tek farklılaştırıyorum. Yalnızca "Alternatif İzin Dosyaları" farklıdır. Başarısız olan proje derlemesi armv7 değerine sahip. Silin ve ardından temiz-> oluştur-> arşivini silin. Başarılı! Umut soru çözebilir


2

Vay be, yaklaşık 6 ayda bir uygulamaları güncelliyor / gönderiyorum. Bunu her yaptığımda bunu yapmanın "yeni" yolunu öğrenmek zorundayım ...

İOS 5.1 ve Xcode 4.3.2'yi çalıştırırken yukarıda açıklananlarla aynı sorunlar

Mesajlar için teşekkürler! Tüm proje ayarlarını armv6, armv7'ye güncelleyerek biraz zaman geçirdim, ama sevinç yok. "Yalnızca etkin mimariyi oluştur" seçeneğini Hayır olarak ayarladığımda, her iki nesneyi aynı dizine koyma konusunda bir derleme hatası aldım.

Neyse ki, bunun yerine hedef oluşturma ayarlarını değiştirdiğinizi fark ettim. Bu nihayet işe yaradı (armv6, armv7 ve "Hedef etkin ayarlar" altında "yalnızca aktif mimari oluştur" seçeneğini Hayır olarak ayarlamak). Bir feragatname olarak, tüm mimarileri proje ayarlarında da armv6, armv7 olarak ayarlamıştım.

Her neyse, yardımın için teşekkürler Brent


2

Bunu yaptıktan sonra xCode 4.3.2'deki hem Hedef hem de Proje ayarlarında bu ayarları değiştirdiğimden ve uygulamamı gönderebildiğim her yerde armv6 ve armv7 için oluşturmaya ayarladığımdan emin olmalıydım.

Güvenli ölçüm için, değişiklikleri yapmak ve temiz, derleme, arşivleme döngüsü yapmak arasında xCode'dan da çıktım.


0

Benim için de oldukça acı verici bir problem. Sadece inşa etmek ve yeniden inşa etmek için yaklaşık bir saat geçirdim - sevinç yok. Sonunda bunu yapmak zorunda kaldım:

  1. Temel SDK'yı en son sürüme yükseltin (benim durumumda iOS 5)
  2. XCode'u yeniden başlat
  3. Temizle ve Oluştur
  4. İşe yaradı!

Sanırım kol6, arm7 hakkında bir sürü jargon, projem her ikisi için de geçerli gibi görünüyordu, en azından ayarlar öyle görünüyordu), tahminimce bu, bizi teknik özellikleriyle süslemek için alaycı bir yoldur anlamıyorum, bu yüzden sadece kolay seçeneği alıp en son iOS'u hedefliyoruz (daha fazla insanın güncel olduğu Apple için iyi) ....


0

İşte Apple'ın belgeleri:

Teknik Soru ve Cevap QA1760

Doğru yapmanız gereken iki şey olduğunu söylüyor:

  1. armv6Mimari derleme ayarlarına ekleme
  2. Build Active Architecture'ı Yalnızca olarak ayarlayın No.

Bu hala size yardımcı olmazsa, doğru yapı yapılandırması için mimari yapı ayarlarını gerçekten değiştirdiğinizi bir kez daha kontrol edin - yanlış olanla uğraşarak yarım saat harcadım ve neden işe yaramadığını merak ettim ...

Edit Scheme...Ürün menüsünde öğesini seçin , soldaki listeden "Arşiv" düzenini tıklayın ve Yapılandırma Yapılandırmasını kontrol edin. Beklediğiniz gibi değilse değeri değiştirin.


0

Not; Bu adımları hem temel projem hem de uygulamamdaki katıştırılmış PhoneGap .xcodeproj dosyası için yapmak zorunda kaldım.

Evet, PhoneGap'i gömdüm; çok sık güncelleniyorlar ve bir özelliğin amortismana uğradığını bilmek için iki aydan daha az zamanım var.


0

Dağıtım hedefinizi bir armv6 işlemcisinden daha yüksek bir değere değiştirmeyi deneyin. XCode ayarları işletim sistemi düzeyine başvuruyor, örneğin: iOS sürüm # {3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) Bunu, ayarlar ayarları sekmesinde veya özet sekmesinde ayarlayabilirsiniz. Proje Gezgini'nde pencerenin sol üst köşesinden, içinde tüm dosyalar listelenerek başlayın. Mavi bir simgeye sahip en üstteki simgesini tıklayın.

(ii) openGL ES 2.0 API ile erişilen ve kontrol edilen programlanabilir gölgelendirici hat devresini kullanmayı planlıyorsanız, "Dağıtım Sürümü" nüzü yaklaşık 4.3'e ayarlamalısınız. 3GS veya daha yenisi. xCode, armv7 kodunu çalıştırmak için iOS 4.2.5 veya daha üst bir sürümün gerekli olduğunu bildiriyor. Ve bir kez daha, bu işlemcinin 3GS ile başladığına inanıyorum. * İOS 4.3 şimdilik benim için bir seçenek gibi görünüyor.

http://theiphonewiki.com/wiki/index.php?title=Armv7

http://en.wikipedia.org/wiki/List_of_iOS_devices


0

XCode armv7 hakkında şikayet etmeye devam ederse, herhangi bir bağlantı cihazının (özellikle iPhone 5 !!) bağlantısını kestiğinizden emin olun ve tekrar deneyin. O küçük bilgiyi bulmam için bana saatler harcadı.


0

Snow Leopard'da Xcode 4.2 kullanarak, hem armv6 (Iphone 3G ve daha düşük) hem de armv7 (3GS dahil 3G'den daha yeni her şey) üzerinde çalışan bir uygulama oluşturmak için aşağıdaki ayarları kullandım.

mimariler: armv6 ve armv7 (kaldırıldı $ (ARCHS_STANDARD_32_BIT))
yalnızca aktif mimari
oluştur: gerekli cihaz özellikleri yok: armv6

Eğer uygulamanın 3G'de ve daha düşükte çalışmasını istiyorsanız armv7'yi gerekli cihaz özelliklerine koymayın.


1
benim için işe yarayan tek şey bu. iphone4, iphone3g, ipad1, ipad2 üzerinde test. armv6 VE armv7'yi gerekli cihaz özelliklerine koymak zorunda olduğumu okudum, ancak armv7'yi koyar koymaz uygulama iphone3g'ye yüklenmeyecek / çalışmayacaktı
noromamai

Armv7 girişini "Gerekli aygıt kapasiteleri" nde bırakmak Xcode'un iPhone 3G'de çalışmamı yasakladı.
tinsukE
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.