Xcode 5'e iOS 6 SDK yüklemek mümkün mü?


250

Xcode 5'in iPhone 6.1 simülatörünü indirmesine izin veren bir tercihler bölmesi var, ancak iOS 6 SDK'nın indirilmesine izin verdiği bir yer bulamıyorum, bu nedenle Xcode 5 ile geliştirirken aktif SDK'yı iOS 6'ya ayarlamak mümkün değil Xcode 5'in iOS 6 SDK'yı yüklemesine izin verecek bir geçici çözüm var mı?

DÜZENLE:

Xcode 5'in genellikle kullanılabilir olduğu ve SDK'nın önceki sürümlerini indirmenize izin verdiği için artık geçici çözümlere gerek yoktur.

resim açıklamasını buraya girin


41
Bugünün uygulama mağazası için uygulama geliştirirken Xcode 5'teki birçok geliştirmeden yararlanmak için.
Tony

61
Hey maddy, "iOS 7'yi yine de kucaklamak" konusundaki nokta GA sürümüyle tamamen bağlantılı değil. Bir uygulamanın tüm tasarım dilini ve UX'in düz tasarım ve yeniden tasarlanmış iOS7 UI bileşenleri ile uyumlu olacak şekilde yeniden tasarlanma kararı ve çabası ne küçüktür ne de iş ve zamanlama açısından kolayca elde edilebilir. SDK 6.1'e karşı oluşturduğunuzda iOS7, iOS 6 ve önceki sürümlerin UI tasarım dilini kullanacaktır (geriye dönük destek amaçlı). Bu nedenle, gelecek iyi bir zaman için 6.1 SDK'ya karşı Xcode 5'de geliştirmek istediğimiz çok iyi garanti edilebilir.
Mart

2
hmmm belki SDK'nın bir monolitik kod yığını yerine IDE'den ayrılmasını beklediğinden?
phreakhead

1
Şu anda IOS7 UI değişikliklerini benimsemeye hazır olmayan bir istemci ile çalışıyorum, ancak XCode 5'teki Çekirdek Veri taşıma geliştirmelerinden yararlanabilir. Bu durumda, tam da istediğim şey bu.
Droid Chris

Xcode'un SDK 6.1 içermiyorsa en azından sorunsuz bir şekilde entegre edeceğini düşünebiliriz. Ama sonra bu sorun var .
JohnK

Yanıtlar:


203

EDIT: 1 Şubat 2014'ten itibaren Apple artık App Store'a gönderilmek üzere iOS7 öncesi uygulamalarını kabul etmeyecek. Bu yüzden bu teknik hala çalışıyor olsa da, çoğu okuyucu için yararlı olmayacaktır.


Evet, bu iyi. Hala bir proje için iOS 4.3 ile yapıyorum (güncellediğimizden beri bir süre geçti; ancak iOS 6 çıktıktan sonra hala kabul ettiler) ve şu anda Xcode 5 ile 10.5 uygulama oluşturuyorum.

Bkz. "Temel SDK" olarak kullanılabilmesi için Xcode'u eski bir SDK'ya nasıl yönlendirirsiniz? nasıl ayarlanacağıyla ilgili ayrıntılar için. Her yükseltme yaptığınızda sizin için her şeyi bağlamak için fix-xcode betiğimi kullanabilirsiniz .

Tek püf noktası eski SDK'ları almak. Bunlara sahip değilseniz, genellikle Xcode'un eski sürümlerini ( geliştirici.apple.com adresinde hala mevcuttur ) indirmeniz , yükleyici paketini açmanız ve ihtiyacınız olan SDK'yı bulmak için avlanmanız gerekir.

SDK'lar yükleyici paketinde şu adreste bulunabilir:

Xcode.app/Contents/Developer/Platforms/


6 SDK ile oluşturulduğundan emin olmak için arşivleme sırasında iOS 7 SDK'sını kaldırmanız gerekir mi?
ohayon

6
Selam. bu yakın ama tam olarak benim için değil. düğmeler iOS 6'ya benziyor, ancak bir UINavigationController kullanılırken görünüm denetleyicisi içeriği hala gezinme çubuğunun arkasına çıkıyor. bunun için iOS 6 davranışını nasıl alacağınız hakkında herhangi bir fikriniz var mı?
mat bezark

2
Hayır; bunu yalnızca cihazda göreceksiniz. İOS 7 simülatöründe iOS 6 uyumluluk modu yoktur. Simülatörde nasıl göründüğünü görmek istiyorsanız, iOS 6 simülatöründe test edin.
Rob Napier

1
Xcode 5 ve iOS 6 SDK ile oluşturulan uygulamayı App Store'a gönderebilir miyim?
hujunfeng

1
İPad 1 hala desteklendiği sürece Apple'ın 5.X iOS'u kabul edeceğini her zaman kabul edebilirsiniz. Yükseltilemez.
ahwulf

60

Ben eski sdk kaldırıldı xcode 5 güncellediğimde ben de aynı sorunu çalıştırıyordu. Ama eski SDK'nın kopyasını başka bir bilgisayardan aldım ve aşağıdaki bağlantıdan indirebilirsiniz.

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com test hesabı test@yopmail.com/test)

Çalışmanın 2 yolu vardır.

1) Bu klasörü açın ve /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs klasörüne yapıştırın ve xcode'u yeniden başlatın.

Ancak, xcode'u güncellerseniz Xcode tarafından tekrar kaldırılabilir.

2) Başka bir yol Unzip ve istediğiniz yere yapıştırmak ve /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs gidin ve buraya sembolik bir bağlantı oluşturmak, böylece SDK aynı Xcode güncelleyin.

Yaptığım başka bir değişiklik, Yapı Ayarı> Mimariler> standart (64 değil), bu yüzden Dağıtım Hedefi'nin tüm sürümlerini listeleyin

Yalnızca dağıtım hedefini değiştirmek istiyorsanız zip dosyasını indirmenize gerek yoktur.

İşte bazı ekran görüntüleri. resim açıklamasını buraya girin resim açıklamasını buraya girin


2
bu ios6.1 sdk'yi nasıl ve nereden indirdiniz? Xcode 5'ime karşı çalıştırmak için iOS 5 sdk arıyorum. Bunu yükleyebilir veya kendim indirebileceğim yeri gösterebilir misin? Teşekkür ederim
Sam B

Aslında ben de eski sisteme sahibim. Bu yüzden bunu eski xcode'dan aldım. Aynı ios sdk 5 için çalıştı ama çok gerekli değil ben bunu almaya çalıştı değil. Ayrıca, bu cevap iyi görünüyorsa, görüşlerinizi + veya - olarak değerlendiririm. Teşekkür ederim.
AvtarSingh Suchariya

1
Hey Avtar, ios6 zip'inizi indirdim, listelediğiniz konumun altında sıkıştırmayı kaldırdım, xcode 5'i tamamen kapattım, tekrar başlattım ve yine de açılır menüde yalnızca 7.0'ı konuşlandırılabilir hedef olarak görüyorum. Ben eksik adımlar olduğunu varsayalım ve daha fazlası var mı?
Sam B

Aynı şey benim için de geçerli. Sadece bir soru, bunu xcode uygulamasına eklediniz mi veya sembolik bir bağlantı mı oluşturdunuz?
AvtarSingh Suchariya

doğrudan app dir kendisi.
Sam B

34

Evet, sorunu bugün çözdüm.

  1. İPhoneOS6.1.sdk gibi SDK dosyasını, arkadaşınızın veya arkadaşınızın eski Xcode dizininde bulun.
  2. Kopyalayın ve Xcode 5 dizinine yerleştirin: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

resim açıklamasını buraya girin

Sonra SDK'yı aşağıdaki gibi seçebilirsiniz:

resim açıklamasını buraya girin

Umarım bu size yardımcı olur.


2
Aynı şeyi yaptım, ancak uygulama GUI'm değişiyor ve iOS 7 GUI'ye benziyor. Uygulamayı çalıştırmak için iPhone Retina (4 inç 64 bit) simülatörünü seçtim. Bunu yaptıktan sonra başka bir şey eksik.
python

20

Eski SDK'yı bulun ve indirin. Daha eski SDK'lar burada bulunur .

Xcode.app dizinini Xcode_4.6.3.app olarak kopyaladım.

Artık her iki xcode sürümünde test edebilir ve hata ayıklayabilirsiniz. Bunları ilgili klasörlerden çalıştırmanız veya masaüstünüzde kısayollar oluşturmanız gerekir. Komut satırından oluştururken olarak parametreyi vermek iPhoneOS6.1yerineiPhoneOS7.0

Bu, Xcode5 ve iOS'ta benim için harika çalıştı.

Xcode5'in SDK dizinine gidin. Genellikle şu konumda bulunur:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

Eski SDK'ya şu şekilde sembolik bir bağlantı ekleyin:

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk

Veya komut satırının herhangi bir yerinden daha doğru,

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk

Uygulamamızı test etmek için bu seçeneği kullanabiliriz, ancak muhtemelen Şubat 2014'ten sonra, önceki iOS 7 sdk ile oluşturulan herhangi bir uygulama uygulama mağazasında kabul edilmeyecektir!
karim

11

Eski SDK'yı indirip

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

Klasör. Çıkış + Sadece değişikliklerin geçerli olduğundan emin olmak için giriş yapın ve yeni XCode'unuzda eski SDK'yı görmelisiniz


Bunu (daha önceki bir cevapta indirme bağlantısını kullanarak) yaptım ve iOS 6.1 sdk seçimi, Oluşturma Ayarları> Mimariler> Temel SDK altında xcode 5'te görünüyor. Ancak, iOS 7 simülatörü (veya iOS 7 cihazında) oluşturup çalıştırdığımda hala iOS 7 UIKit düğmelerini kullanıyor (iOS 6 sürümleri değil). Herkes neden herhangi bir öneriniz varsa, minnettar olurum ....
Bill Patterson

TimeMachine yüklüyse yukarıdaki yolu açabilir (terminal türünde: open "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/") ve iOS6.1 SDK'sını oradan geri yükleyebilirsiniz .
avance

11

Sadece eklemek için, simülatörün eski sürümlerini Xcode 5'in kendisiyle indirebilirsiniz - sadece tercihlere gidin ve İndirmeler altında bulabilirsiniz:

resim açıklamasını buraya girin


Bu, xcode 5'in beta sürümünden çıktığı ve şimdi genel bir sürüm olduğu için olmuş olmalı. Bilmek güzel, teşekkürler Smikey
Tony

5
@Manni Bu, eski API'ye karşı derleme ile aynı şey değildir.
İOS

Daha eski bir hedef platform belirlemiş olsanız bile bu seçenekler Xcode 6'da varsayılan olarak görünmez.
GilesDMiddleton

10
  • Apple Dev Center'dan Xcode 4.6.x sürümünü indirin: https://developer.apple.com/downloads/index.action
  • Uygulamalar klasöründe Xcode4 adlı bir klasör oluşturun ve indirilen dmg'yi buraya sürükleyip bırakın.
  • Bir terminal penceresi açın

    $sudo cp -R /Applications/Xcode4/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
  • Bir sistem klasörü içinde olduğunuz için bir parola girmeniz istenir

  • Xcode 5'i açın, şimdi her iki SDK'yı da görmelisiniz

10

Sadece benim için en kolay çözüm:

  1. Örneğin xcode'un daha eski bir sürümünde "iPhoneOS6.1 sdk" gibi daha eski bir SDK bulun. Eğer yapmadıysanız , şu adresteki Apple Developer sunucusundan indirebilirsiniz : https://developer.apple.com/downloads/index.action?name=Xcode xcode.dmg dosyasını açtığınızda bulabilirsiniz. Xcode.app (sağ tıklama ve "içeriği göster") ve İçindekiler / Geliştirici / Platformlar / iPhoneOS.platform / Geliştirici / SDKs / iPhoneOS6.1 sdk resim açıklamasını buraya girin
  2. Basit iPhoneOS6.X sdk klasörünü kopyalayın ve xcode.app dosyasına yapıştırın
    • Applications klasöründeki xcode.app dosyasına sağ tıklayın.
    • İçindekiler / Geliştirici / Platformlar / iPhoneOS.platform / Geliştirici / SDK'lar /
    • Sadece buraya yapıştırın.

resim açıklamasını buraya girin

  1. Xcode uygulamanızı kapatın ve tekrar açın.

Bir uygulamayı simülatörünüzde iOS 6'da test etmek için: - Etkin şemanızda iOS 6.0'ı seçmeniz yeterlidir. resim açıklamasını buraya girin

Uygulamanızı iOS 6'da oluşturmak için, uygulamanızın tasarımı iOS 7 yüklü bir iPhone'da eski tasarım olacak: - Hedeflerde iOS6.1'i seçin - Temel SDK

resim açıklamasını buraya girin

Not: Hedeflerinizdeki temel SDK'yı değiştirdiğinizde, iOS 7.0 artık simülatöre dayanmak için kullanılamayacak!


9

Bunu yapabilir , ama gerçekten gerekli değil

Bu nasıl yapılır

Jason Lee cevabı aldı. XCode'u kurarken, önceki kurulumları değiştirmek yerine saklamayı tercih ettim. Bu yüzden kurulum klasörümde var

resim açıklamasını buraya girin

Yani /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKsfarklı sdks içerir. (Xcode.app yerine doğru numarayı yazın)

/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

Birini kopyaladıktan sonra işte benim klasörüm.

resim açıklamasını buraya girin

Şimdi xCode'u yeniden başlatın ve sdks'nin önceki sürümlerini base sdk olarak ayarlayabilirsiniz.

Neden gerekli değil

Yönlendiren Apple Belgeleri

Bir Xcode projesi için belirli bir SDK kullanmak için, projenizin oluşturma ayarlarında iki seçim yapın.

  1. Bir dağıtım hedefi seçin .

    Bu, yazılımınızın çalışabileceği en eski işletim sistemi sürümünü tanımlar.

  2. Bir temel SDK seçin

    Yazılımınız, temel SDK'ya karşılık gelen işletim sistemi sürümlerinde bulunan ve temel SDK'ya karşılık gelen özellikleri kullanabilir. Varsayılan olarak, Xcode bunu Xcode tarafından desteklenen en yeni işletim sistemine ayarlar.

Kural, en son sürümü temel SDK olarak kullanın ve dağıtım hedefini çalışması gereken minimum sürüm uygulamasına ayarlayın

Örneğin, iOS 7'yi temel sdk olarak kullanabilir ve iOS 6'yı dağıtım hedefi olarak ayarlayabilirsiniz. İOS 6'da nasıl çalıştığını test etmek için iOS 6 simülatöründe çalıştırın. Simülatörler listesiyle yoksa simülatörü yükleyin.

resim açıklamasını buraya girin

Ayrıca, iOS 6'ya kadar olan özellikleri koşulsuz olarak kullanabilirsiniz. Ve koşullu olarak, önceki sürümleri desteklerken yeni güncellenmiş cihazlar için iOS 7'nin yeni özelliklerini destekleyebilirsiniz.

Bu, Zayıf Bağlantılı Sınıflar , Zayıf Bağlantılı Yöntemler , İşlevler ve Semboller kullanılarak yapılabilir

https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW3

Zayıf Bağlantı

Xcode'da dağıtım hedefini (gerekli minimum sürüm) iOS6'ya ve hedef SDK'yı (izin verilen maksimum sürüm) iOS7 olarak ayarladığınızı varsayalım. Derleme sırasında, derleyici daha önceki arayüzleri güçlü bir şekilde bağlarken iOS7'de tanıtılan arayüzleri zayıf bir şekilde bağlayacaktır. Bu, uygulamanızın iOS6'da çalışmaya devam etmesine izin verir, ancak kullanılabilir olduğunda yeni özelliklerden yine de yararlanır.


4

Buradaki diğer cevaplar da doğru, ancak aşağıdaki adımları en kolay olarak görüyorum:

Xcode 4.6.3'ü "Xcode'un daha eski bir sürümünü mü arıyorsunuz?" (şu anda burada işaret ediyor ) ve dmg'yi bağlayın.

Ardından terminalde SDK dosyalarını kopyalayın:

cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

Son olarak, Xcode'u yeniden başlatın ve işiniz bitti.


3

Uygulamam sorunsuz bir şekilde Xcode 5'e geçirildi çünkü hala projede belirlediğiniz orijinal iOS Dağıtım Hedefi ile oluşturulabilir (benim durumumda 5.1). Yeni SDK aşılmaz bir soruna neden olmazsa, neden onu kullanarak oluşturmuyorsunuz? Elbette kaputun altında birçok gelişme var.

Örneğin, Xcode 4.6.3 yerine Xcode 5 kullanmayı tercih edeceğim. Neden? Xcode 5'teki metin / kod alanlarının UI kaydırması artık tüm CPU iş parçacığını çiğnemediği için çok daha fazla pil ömrü elde edeceğim.


Sebepler - Xcode 5 şu anda oldukça kararsız. Benim için saatlik çöküyor. Ayrıca bazı görünümlerde bazı garip konumsal sorunlar ve renk sorunları (düzeltmek için çok fazla iş olmasa da)
Nick H247

2

6.1 SDK'yı diğer kodlarda açıklandığı gibi Xcode 5'e bağlamak bir adımdır. Bununla birlikte, bu hala iOS 7 yeni UI öğelerinde çalışmanın, görünüm denetleyicilerinin tam boyutlu hale getirilmesi vb.

Bu cevapta açıklandığı gibi , kullanıcı arayüzünü iOS 7'de eski moda geçirmek de gerekiyor:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"];
[[NSUserDefaults standardUserDefaults] synchronize];

Dikkat: Bu belgelenmemiş bir anahtardır ve App Store sürümleri için önerilmez!

Ayrıca, cihaz üzerinde test yaparken deneyimlerime göre, kodu uygulama lansmanında oldukça erken çalıştırmamıza rağmen, uygulamayı başlattığımda sadece ikinci kez çalıştığını gördüm +[AppDelegate initialize]. Ayrıca Xcode 4.6 kullanılarak oluşturulan bir versiyonda küçük farklılıklar var. Örneğin, şeffaf gezinme çubukları farklı davranır (görünümün tam boyutlu olmasına neden olur).

Ancak, Xcode 4.6.3 Mavericks üzerinde çöktüğünden (en azından benim için rdar: // 15318883 ), bu hata ayıklama için Xcode 5'i kullanmaya devam etmek için en azından bir çözümdür.


1

XCode 4'ü indirdim ve diğer cevaplarda açıklandığı gibi iOS 6.1 SDK'yı XCode 5'e aldım. Sonra iOS 6.1 Simulator'ı da yükledim (tercihlerde mevcuttu). Ayrıca proje ayarlarında Base SDK'yı iOS 6.1'e değiştirdim.

Tüm bu manipülasyonlardan sonra 6.1 baz sdk ile proje iOS 7 Simulator'da yetenek modunda çalışır.


1

1 Şubat'tan itibaren Apple, yalnızca iOS6 veya daha düşük sürümler için oluşturulmuş uygulamayı reddedecek. İşte aynı zamanda resmi iletişim Apple'ın . İOS7 için daha iyi bir başlangıç ​​yapmaya başlayın.

İfademi açıklığa kavuşturmak için: iOS6 veya daha düşük bir sürüm için oluşturursanız, apple uygulamanızı reddeder. İOS7 için oluşturursanız ve her şey yolundaysa, bu şu anlama gelir:

  1. xcode5 kullanmalısın
  2. en azından iOS7'de dağıtmalısınız.

Apple e-postasının içeriği bana oldukça açık

"Uygulamalarınızın iOS 7'deki yenilikçi teknolojilerle sorunsuz bir şekilde çalıştığından emin olun. 1 Şubat'tan itibaren App Store'a gönderilen yeni uygulamalar ve uygulama güncellemeleri Xcode 5 ve iOS 7 SDK ile oluşturulmalıdır."


Evet, ancak iOS 6 SDK, iOS 7 ile de iyi çalışıyor. Bazı uygulamalar değiştirilmek gerçekten acı verici.
Aniruddh Joshi

Yanlış olduğuna inanıyorum. Apple, (a) iOS 7 için optimize edilmiş en son Xcode 5 ve (b) tarafından oluşturulmuştur. Rob Napier'in bağlantılar için verdiği cevaba bakınız .
Basil Bourque

Bazılarımız Kurumsal dağıtım için gelişir ve eski SDK'ları (ve cihazları) hedeflememiz gerekir. Kurumsal uygulamalar Apple Review sürecinden ve / veya App Store'dan geçmez ve bu tartışma oldukça yararlıdır, alakalı kalır ve gelecekte de alakalı olmaya devam eder. Bakış açınızı anlıyorum, ama sadece bu değil.
Kevin OMara

Tamamen haklısın !!! Kurumsal dağıtım hakkında düşünmemiştim. Ancak, ios7 optimizasyonu ve inceleme sürecine önem vermeden, yalnızca dağıtım hedefini belirleyerek yeni Xcode ile iOS6'da da dağıtabileceğinizi unutmayın.
Andrea

0

Şu anda Xcode 4.6.3 ve 5.0 yüklü. 5.0'ı eski sürümdeki SDK'lara bağlamak için aşağıdaki bash betiğini kullandım:

platforms_path="$1/Contents/Developer/Platforms";
if [ -d $platforms_path ]; then
    for platform in `ls $platforms_path`
    do
        sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs;
    done;
fi;

Sadece .app yolunu sağlamanız gerekir:

./xcode.sh /Applications/Xcode-463.app

5.1 sürümüne yükseltmenin 7.0.x SDK'mı kaldırdığını ve 7.1 SDK ile değiştirdiğini unutmayın. Xcode5-DP67.0.x'i kurtarabildiğim eski bir yüklemeye sahibim, ancak bu, en son Xcode sürümüne yükseltmeden veya yüklemeden önce SDK dizinlerini yedeklemek (veya uygulamayı tamamen yeniden adlandırmak) için iyi bir hatırlatmadır.
Wayne
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.