Xcode 4.2 ve iOS 5 SDK kullanırken eski iOS sürümlerini hedeflemek mümkün müdür?


103

Yakın zamanda Xcode 4.2'yi iOS 5 SDK paketiyle indirdim ve hata ayıklama için iOS 4.2.1 ile iPhone 3G'lerimi kullanamadığımı hemen fark ettim. Yalnızca iOS 5 yüklü iPhone 4'ümde hata ayıklayıp test yapabiliyorum.

5.0'dan az iOS çalıştıran herhangi bir cihazım için Xcode "iPhone3GS için çalışma tamamlandı" diyor ve çalıştırmıyor. Uygulamamda 3.0'ın üzerindeki herhangi bir özelliği kullanmadığım ve 3.0 veya sonraki tüm sürümleri hedefleyebilmek istediğim için dağıtım hedefim 3.0 olarak ayarlandı. Tüm ön hazırlık profillerimi kurdum ve güncelledim.

Xcode'dan çıktım ve yeniden başlattım, yapıyı birkaç kez temizledim. Archtecture oluşturma ayarlarına armv6 eklemeyi denedim, ancak hiçbir şey uygulamamı eski telefonumda ios 4.2.1 ile oluşturup çalıştırmama izin vermiyor.

Sorum şu, yeni SDK'ya sahip uygulamaları 5'ten düşük iOS sürümleri için çalıştırmaya devam etmek mümkün mü? Eski telefonuma yükleyemezsem, uygulamamın daha düşük iOS sürümlerinde çalışacağından nasıl emin olabilirim?

Düzenleme: Tamam, iOS SDK 5 varsayılan olarak armv6 desteğini düşürmüş gibi görünüyor. Yapmanız gereken, hem Hedefiniz hem de Projeniz için Yapı Ayarları altındaki Mimariler alanına armv6 eklemektir. Ardından uygulamanız iPhone 3G cihazlarda çalışabilecektir. Yanıt burada bulunabilir iOS 5 ile armv6 ve armv7 mimarileri için nasıl derlenir


Düzenlemenizin, iOSsürümler için ayrı bir sorun olan mimarilerle ilgili olduğunu unutmayın . Ayrıca, bulduğunuz çözümü kabul edebilmeniz ve bu sorunun yanıtlanmış olarak işaretlenebilmesi için lütfen düzenlemeyi yanıt olarak ekleyin.

Yanıtlar:


153

İPhone 3G 4.2.1 üzerinde çalışan yeni oluşturulmuş bir Xcode 4.2 projesini almaya çalışırken aynı sorunu yaşıyordum. İşte onu çalıştırmak için nasıl başardığım.

1) Hedefin "Yapı Ayarları" ==> "Mimari" ni "Standart (armv7)" den "diğer" e değiştirin. Armv6 ve armv7 ekleyin.

2) Hedefin "Yapı Ayarları" ==> "Geçerli Mimari" ni armv6 ve armv7 olarak değiştirin.

3) Hedefin "Derleme Ayarları" ==> "iOS Dağıtım Hedefini" iOS 4.2 olarak değiştirin.

görüntü açıklamasını buraya girin

4) * -Info.plist projelerini açın, "Gerekli cihaz yetenekleri" ayarını kaldırın (armv7 gerektirdiğini unutmayın) görüntü açıklamasını buraya girin

btw Uygulamayı düzenleyici aracılığıyla manuel olarak eklemeye çalıştığımda bunu anladım ve şunu bildirdi:

Uygulama yüklenemiyor

/Users/.../TestsDebug.app adresindeki uygulama için Info.plist, Dev iPhone 3G tarafından karşılanmayan cihaz kapasitesi gereksinimlerini belirtir

Hepsi bundan sonra çalışmalı. Bir PITA hakkında konuşun.


Çok teşekkür ederim! Sana biraz bira borçluyum! Bu gerçekten sorunlarımı çözdü, PITA gerçekten: D
Greg Ellis 14'11

4
Teşekkür ederim! Mimari ayarları hakkında başka bir yerde okumuştum, ancak başka hiç kimse "Gerekli cihaz özellikleri" ayarlarından da bahsetmiyor gibi görünüyor.
bunnyhero

Eklemeliyim: hem yeni hem de eski projeler yükseltmeden etkilendi! Google'da çalışmadan önce eski eşyalarımı test ettim ve onlar da işe yaramadı! Ben de sana bir bira borçluyum! :)
Eduardo Costa

1
Aynı sorunu yaşıyorum, ancak projenin ayarları Mimariler için 'Standart armv7' olsa bile, Geçerli Mimariler zaten 'armv6 armv7' gösteriyordu. Dahası, Info.plist içinde 'Gerekli cihaz özellikleri' özelliğim yoktu. Yine de numarayı deneyecek, umarım işe yarar!
rchampourlier

"Gerekli cihaz özellikleri" beni de aldı
codecaffeine

12

Git Xcode> Tercihler> Yüklemeler ve eski iOS sürümleri için destek ayıklama yükleyin.


Tercihlere gittim ve eski işletim sistemleri için hata ayıklama desteğini indirip yükledim, xcode'dan çıktım, xcode'u yeniden açtım ve oluşturdum, ancak uygulama hala eski cihazıma yüklenmeyecek. Şimdi tamamen kayboldum, cevabınızı gördüğümde bunun sorunumu çözeceğinden emindim :(
Greg Ellis

1
Ben de sana bir bira borçluyum! Bu, Xcode 4 güncellemesinden sonra yaşadığım BAŞKA bir sorunu çözdü! Artık iOS 4.2 cihazımda (iPod Touch 2. nesil) hata ayıklayabilirim!
Eduardo Costa

3

mmorris sorunu çözmek için beni yaklaştırdı ... Info.plist'te, Gerekli Cihaz Yeteneklerini armv7 olarak değil armv6 olarak ayarlamam gerekiyordu Umarım bu başkalarına da yardımcı olur.


1

Telefonu bağlamanız ve ardından ajandaya gitmeniz gerekir. Xcode, eski sürümü otomatik olarak istemelidir.

Daha fazla bilgi için geliştirici sayfasına bakın. 4.2 beta notlarında açıklandı


Bunu yaptım ve "Bu cihazı geliştirme için kullan" ı tıkladım ve yapması gerekeni yapıyor gibiydi, ancak yine de eski cihazımda xcode'dan çalıştıracak bir uygulama alamıyorum.
Greg Ellis

1

Uygulamamı eski bir iPod Touch'ta çalıştırmaya çalışırken benzer bir sorunla karşılaştım. Xcode 4.3.3'e yükselttim ve uygulama artık eski donanımda benim için hata ayıklayıcıda çalışmıyordu.

Buradaki "Mimariler" ve "Gerekli aygıt özellikleri" hakkındaki diğer yorumların doğru şekilde belirtilmesi için önemli ayrıntılar olduğuna inanıyorum. Maalesef sorunumu çözmek için yeterli olmadılar.

Benim durumumda, inşa planını suçlu buldum. Xcode 4.3.3, projemi yükselttiğinde GDB hata ayıklayıcıdan LLDB'ye geçmemi istedi. Ne zaman GDB benim düzeni arka Run eylem değişti , Xcode benim eski donanım üzerinde uygulamayı tekrar çalıştırmak başardı.


1

Mimarilere armv6 eklemem gerektiğini öğrendim, ancak yine de çalışmadı. Ve şimdi armv7'yi gerekli yeteneklerden kaldırdım ve işte bu kadar! İşe yaradı!


0

Bu benim için çalıştı ve daha önce Xcode'un eski bir sürümüne sahipseniz sizin için çalışmalıdır. Aksi takdirde, SDK'yı SDK'nın eski bir sürümünden almak için başkaları tarafından verilen tavsiyelere uymalısınız:

sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

Bu komut başkaları tarafından gösterilenden sadece biraz farklıdır, ancak bu komutlar dosyaları benim için SDK klasörüne bıraktı - bunun bir alt dizininin uygun adla oluşturulmasını istiyoruz.


0

Benim durumumda, Gerekli cihaz yeteneklerinde yedek bir hat vardı görüntü açıklamasını buraya girin

Sadece kaldırdım ...

görüntü açıklamasını buraya girin

Umarım başka birine yardımcı olur.

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.