Apakah mungkin untuk menginstal iOS 6 SDK pada Xcode 5?

250

Xcode 5 memiliki panel preferensi yang memungkinkan seseorang untuk mengunduh simulator iPhone 6.1, namun saya tidak dapat menemukan tempat di mana ia memungkinkan mengunduh iOS 6 SDK, sehingga tidak mungkin untuk mengatur SDK aktif ke iOS 6 ketika mengembangkan dengan Xcode 5 Apakah ada solusi yang memungkinkan Xcode 5 menginstal iOS 6 SDK?

EDIT:

Penanganan masalah tidak lagi diperlukan sekarang karena Xcode 5 umumnya tersedia dan memungkinkan Anda untuk mengunduh versi SDK sebelumnya.

masukkan deskripsi gambar di sini

Tony
sumber
41
Untuk memanfaatkan banyak peningkatan di Xcode 5, sambil tetap bisa membangun aplikasi untuk toko aplikasi hari ini.
Tony
61
Hei gila, intinya tentang "merangkul iOS 7 anyways" sama sekali tidak terikat dengan rilis GA. Keputusan dan upaya mendesain ulang seluruh bahasa desain aplikasi dan UX agar sejalan dengan desain datar dan komponen UI iOS7 yang dirancang ulang tidaklah kecil, juga tidak dapat dengan mudah datang dari perspektif bisnis & waktu. Membangun melawan SDK 6.1 akan membuat iOS7 menggunakan bahasa desain UI iOS 6 dan sebelumnya (untuk tujuan dukungan mundur). Dengan demikian mungkin sangat terjamin bahwa kami ingin mengembangkan dalam Xcode 5 terhadap 6.1 SDK untuk beberapa waktu yang baik mendatang.
Marchy
2
hmmm mungkin karena dia mengharapkan SDK dipisahkan dari IDE, bukan satu tumpukan kode monolitik?
phreakhead
1
Saat ini saya sedang bekerja dengan klien yang tidak siap untuk menerima perubahan UI IOS7, tetapi dapat mengambil manfaat dari peningkatan migrasi Core Data di XCode 5. Jadi dalam hal ini, inilah yang saya inginkan juga.
Droid Chris
Orang mungkin berpikir bahwa Xcode, jika tidak termasuk SDK 6.1, setidaknya akan mengintegrasikannya dengan lancar. Tapi kemudian ada masalah ini .
JohnK

Jawaban:

203

EDIT: Mulai 1 Februari 2014, Apple tidak akan lagi menerima aplikasi pra-iOS7 untuk diajukan ke App Store. Jadi sementara teknik ini masih berfungsi, itu tidak akan berguna bagi sebagian besar pembaca.


Ya, ini baik-baik saja. Saya masih membangun dengan iOS 4.3 untuk satu proyek (sudah beberapa saat sejak kami memperbarui; tetapi mereka masih menerimanya setelah iOS 6 keluar), dan saya saat ini membangun 10,5 aplikasi dengan Xcode 5.

Lihat Bagaimana mengarahkan Xcode ke SDK lama sehingga dapat digunakan sebagai "Base SDK"? untuk detail tentang cara mengaturnya. Anda dapat menggunakan skrip fix-xcode saya untuk menautkan semuanya untuk Anda setiap kali Anda memutakhirkan.

Satu-satunya trik adalah mendapatkan SDK lama. Jika Anda tidak memilikinya, Anda biasanya perlu mengunduh Xcode versi lama (masih tersedia di developer.apple.com ), buka paket pemasang, dan cari-cari untuk menemukan SDK yang Anda butuhkan.

SDK dapat ditemukan di dalam paket pemasang di:

Xcode.app/Contents/Developer/Platforms/

Rob Napier
sumber
apakah Anda perlu menghapus iOS 7 SDK saat pengarsipan untuk memastikan bahwa itu dibangun dengan iOS 6 SDK?
ohayon
6
Hai. ini dekat tetapi tidak cukup bagi saya. tombolnya terlihat seperti iOS 6 tetapi konten pengontrol tampilan masih naik di belakang bilah navigasi saat menggunakan UINavigationController. Adakah pemikiran tentang cara mendapatkan perilaku iOS 6 untuk itu juga?
matt bezark
2
Tidak; Anda hanya akan melihat ini di perangkat. Tidak ada mode kompatibilitas iOS 6 di simulator iOS 7. Jika Anda ingin melihat tampilannya di simulator, uji pada simulator iOS 6.
Rob Napier
1
Bisakah saya mengirimkan aplikasi yang dibangun dengan Xcode 5 dan iOS 6 SDK ke App Store?
hujunfeng
1
Selama iPad 1 masih didukung, Anda selalu dapat menganggap Apple akan menerima 5.X iOS. Itu tidak bisa ditingkatkan.
ahwulf
60

Saya juga menjalankan masalah yang sama ketika saya memperbarui ke xcode 5 itu dihapus SDK yang lebih tua. Tapi saya mengambil salinan SDK lama dari komputer lain dan hal yang sama dapat Anda unduh dari tautan berikut.

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(akun uji www.4shared.com [email protected]/test)

Ada 2 cara untuk bekerja.

1) Unzip dan rekatkan folder ini ke /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs & restart xcode.

Tetapi ini mungkin sekali lagi dihapus oleh Xcode jika Anda memperbarui xcode.

2) Cara lain adalah Unzip dan rekatkan di tempat yang Anda inginkan dan buka /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs dan buat tautan simbolik di sini, sehingga SDK akan tetap sama meskipun Anda memperbarui Xcode.

Perubahan lain yang saya buat, Pengaturan Bangun> Arsitektur> standar (bukan 64) jadi daftarkan semua versi Sasaran Penempatan

Tidak perlu mengunduh zip jika Anda hanya ingin mengubah target penyebaran.

Berikut beberapa tangkapan layar. masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

AvtarSingh Suchariya
sumber
2
bagaimana dan di mana Anda mengunduh sdk ios6.1 ini? Saya mencari iOS 5 SDK untuk dijalankan terhadap Xcode saya 5. Dapatkah Anda mengunggahnya atau menunjuk saya di mana saya dapat mengunduhnya sendiri. Terima kasih
Sam B
Sebenarnya, saya juga memiliki sistem yang lama. jadi saya mengambil ini dari xcode yang lebih lama. Sama saya mencoba untuk ios SDK 5 tetapi karena tidak banyak yang diperlukan saya tidak mencoba untuk keluar dari. Juga, jika jawaban ini tampaknya baik, saya menghargai umpan balik Anda dalam bentuk + atau -. Terima kasih.
AvtarSingh Suchariya
1
Halo Avtar, saya mengunduh zip ios6 Anda, membuka ritsletingnya di bawah jalur lokasi yang telah Anda daftarkan, menutup xcode 5 sepenuhnya, meluncurkannya lagi dan saya masih melihat hanya 7,0 sebagai target yang dapat digunakan dalam opsi tarik turun. Saya berasumsi ada langkah yang hilang dan ada lebih dari itu?
Sam B
Hal yang sama juga bekerja untuk saya. Hanya pertanyaan, apakah Anda menambahkan ini ke aplikasi xcode itu sendiri atau membuat tautan simbolis?
AvtarSingh Suchariya
langsung ke dir aplikasi itu sendiri.
Sam B
34

Ya, saya baru saja memecahkan masalah hari ini.

  1. Temukan file SDK, seperti iPhoneOS6.1.sdk, di direktori Xcode lama Anda atau teman Anda.
  2. Salin & masukkan ke direktori Xcode 5: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

masukkan deskripsi gambar di sini

Maka Anda dapat memilih SDK seperti di bawah ini:

masukkan deskripsi gambar di sini

Semoga ini bisa membantu Anda.

Jason Lee
sumber
2
Saya melakukan hal yang sama tetapi perubahan aplikasi GUI saya dan sepertinya iOS 7 GUI. Saya telah memilih iPhone Retina (4 inch 64-bit) simulator untuk menjalankan aplikasi. Saya kehilangan hal lain setelah melakukan ini.
python
20

Temukan dan unduh SDK lama. SDK lama ditemukan di sini .

Saya telah menyalin direktori xcode.app sebagai Xcode_4.6.3.app.

Sekarang Anda dapat menguji dan men-debug di kedua versi xcode. Anda harus menjalankannya dari folder terkait atau membuat pintasan di desktop Anda. Ketika membangun dari baris perintah berikan parameter sebagai iPhoneOS6.1gantiiPhoneOS7.0

Ini bekerja sangat baik untuk saya di Xcode5 dan iOS.

Pergi ke ke dir SDK Xcode5. Biasanya terletak di:

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

Tambahkan tautan simbolis ke SDK lama seperti ini:

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

Atau lebih tepatnya dari mana saja di baris perintah,

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
karim
sumber
Kita dapat menggunakan opsi ini untuk menguji aplikasi kita, tetapi mungkin setelah Februari 2014, aplikasi apa pun yang dibangun dengan iOS 7 SDK sebelumnya tidak akan diterima di app store!
karim
11

Anda dapat mengunduh SDK yang lebih lama dan menginstalnya

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

map. Logout + Login hanya untuk memastikan perubahannya berlaku dan Anda akan melihat SDK lama di XCode baru Anda

blabber tak terucapkan
sumber
Saya telah melakukan ini (menggunakan tautan unduhan di jawaban sebelumnya), dan pilihan iOS 6.1 sdk muncul di xcode 5 di bawah Build Settings> Arsitektur> Base SDK. Namun, ketika saya membangun dan menjalankan simulator iOS 7 (atau perangkat iOS 7) masih menggunakan tombol iOS 7 UIKit (bukan versi iOS 6). Jika ada yang punya saran mengapa, saya akan berterima kasih ....
Bill Patterson
Jika Anda memasang TimeMachine, Anda dapat membuka jalur di atas (dalam tipe terminal: buka "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/") dan kembalikan iOS6.1 SDK dari sana .
avance
11

Hanya dengan menambahkan, Anda sebenarnya dapat mengunduh versi lama dari simulator dengan Xcode 5 itu sendiri - cukup buka preferensi dan Anda akan menemukannya di bawah Unduhan:

masukkan deskripsi gambar di sini

Smikey
sumber
Ini pasti terjadi sejak xcode 5 keluar dari beta dan sekarang merupakan rilis umum. Baik untuk tahu, terima kasih Smikey
Tony
5
@Manni Ini tidak sama dengan kompilasi melawan API lama. Anda sedang membangun menggunakan API baru untuk iOS 6.
oligofren
Opsi ini tidak muncul secara default pada Xcode 6 bahkan jika Anda telah menetapkan platform target yang lebih tua.
GilesDMiddleton
10
  • Unduh Xcode 4.6.x dari Apple Dev Center: https://developer.apple.com/downloads/index.action
  • Buat folder bernama Xcode4 di dalam folder Aplikasi dan seret-n-jatuhkan dmg yang diunduh di sana.
  • Buka jendela terminal

    $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/
  • Anda akan diminta untuk memasukkan kata sandi karena Anda berada di dalam folder sistem

  • Buka Xcode 5 dan sekarang Anda akan melihat kedua SDK
autremoi
sumber
10

Bagi saya solusi termudah:

  1. Cari SDK yang lebih lama seperti misalnya "iPhoneOS6.1 sdk" di versi xcode yang lebih lama misalnya. Jika belum, Anda dapat menurunkannya dari server Pengembang Apple di alamat ini: https://developer.apple.com/downloads/index.action?name=Xcode Ketika Anda membuka xcode.dmg Anda dapat menemukannya dengan membuka Xcode.app (klik kanan dan "tampilkan konten") dan pergi ke Konten / Pengembang / Platform / iPhoneOS.platform / Pengembang / SDKs / iPhoneOS6.1 sdk masukkan deskripsi gambar di sini
  2. Sederhana Salin folder iPhoneOS6.X sdk dan rekatkan di xcode.app Anda
    • klik kanan pada xcode.app Anda di folder Aplikasi.
    • Pergi ke Konten / Pengembang / Platform / iPhoneOS.platform / Pengembang / SDKs /
    • Cukup tempel di sini.

masukkan deskripsi gambar di sini

  1. Tutup aplikasi xcode Anda dan buka kembali.

Untuk menguji aplikasi di iOS 6 pada simulator Anda: - Cukup pilih iOS 6.0 di sheme aktif Anda. masukkan deskripsi gambar di sini

Untuk membangun aplikasi Anda di iOS 6, sehingga desain aplikasi Anda akan menjadi desain yang lebih lama pada iPhone dengan iOS 7 juga: - Pilih iOS6.1 dalam Target - Base SDK

masukkan deskripsi gambar di sini

Perhatikan saja: Saat Anda mengubah SDK dasar di Target Anda, iOS 7.0 tidak akan tersedia lagi untuk dibuat di simulator!

Daniel C.
sumber
9

Dapat melakukan ini , Tapi tidak terlalu diperlukan

Bagaimana cara melakukannya

Jason Lee mendapat jawabannya. Saat menginstal xCode saya lebih suka menyimpan instalasi sebelumnya daripada menggantinya. Jadi saya punya ini di folder instalasi saya

masukkan deskripsi gambar di sini

Jadi /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKsBerisi sdks berbeda. (Ganti Xcode.app dengan nomor yang benar) salin sdks sebelumnya ke

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

Ini folder saya setelah saya salin satu.

masukkan deskripsi gambar di sini

Sekarang restart xCode dan Anda dapat mengatur versi sdks sebelumnya sebagai SDK dasar.

Kenapa tidak perlu

Merujuk Documentaion Apple

Untuk menggunakan SDK tertentu untuk proyek Xcode, buat dua pilihan dalam pengaturan build proyek Anda.

  1. Pilih target penempatan .

    Ini mengidentifikasi versi OS paling awal tempat perangkat lunak Anda dapat berjalan.

  2. Pilih SDK dasar

    Perangkat lunak Anda dapat menggunakan fitur yang tersedia dalam versi OS hingga dan termasuk yang sesuai dengan SDK dasar. Secara default, Xcode menetapkan ini ke OS terbaru yang didukung oleh Xcode.

Aturannya adalah Gunakan terbaru sebagai SDK dasar dan tetapkan target penyebaran ke aplikasi versi minimum yang seharusnya dijalankan

Misalnya Anda dapat menggunakan iOS 7 sebagai SDK dasar dan menetapkan iOS 6 sebagai target penempatan. Jalankan di iOS 6 simulator untuk menguji cara kerjanya di iOS 6. Instal simulator jika tidak tersedia dengan daftar simulator.

masukkan deskripsi gambar di sini

Tambahan lagi, Anda dapat menggunakan fitur tanpa syarat hingga iOS 6. Dan secara kondisional Anda dapat mendukung fitur baru iOS 7 untuk perangkat yang diperbarui baru sambil mendukung versi sebelumnya.

Hal ini dapat dilakukan dengan menggunakan Kelas Lemah Linked , Lemah Linked Metode , Fungsi , dan Simbol

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

Lemah Menghubungkan

Misalkan dalam Xcode Anda menetapkan target penyebaran (versi minimum yang diwajibkan) untuk iOS6 dan SDK target (versi maksimum yang diizinkan) ke iOS7. Selama kompilasi, kompiler akan menautkan lemah antarmuka apa pun yang diperkenalkan di iOS7 sementara sangat menghubungkan antarmuka sebelumnya. Ini akan memungkinkan aplikasi Anda untuk terus berjalan di iOS6 tetapi tetap memanfaatkan fitur yang lebih baru ketika tersedia.

MadNik
sumber
4

Jawaban lain di sini juga benar, tetapi saya menemukan langkah-langkah berikut sebagai yang termudah:

Cukup unduh Xcode 4.6.3 dari tautan pusat dev yang bertuliskan "Mencari versi Xcode yang lebih lama?" (saat ini menunjuk ke sini ) dan pasang dmg.

Kemudian di terminal, salin file SDK melalui:

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/

Akhirnya, luncurkan kembali Xcode dan Anda selesai.

nioq
sumber
3

Aplikasi saya dialihkan ke Xcode 5 dengan mulus karena masih dapat dibangun dengan Target Penerapan iOS asli yang Anda tetapkan dalam proyek (5.1 dalam kasus saya). Jika SDK baru tidak menyebabkan masalah yang tidak dapat diatasi, lalu mengapa tidak membangunnya? Tentunya ada banyak perbaikan di bawah kap.

Sebagai contoh, saya akan lebih suka menggunakan Xcode 5 daripada Xcode 4.6.3. Mengapa? Saya akan mendapatkan lebih banyak daya tahan baterai karena scrolling UI dari area teks / kode di Xcode 5 tidak lagi mengunyah seluruh utas CPU.

Steven Lu
sumber
Alasan untuk tidak - Xcode 5 cukup tidak stabil saat ini. Hancur setiap jam untukku. Juga beberapa masalah posisi aneh dan masalah warna dalam beberapa tampilan (walaupun tidak banyak pekerjaan untuk diperbaiki)
Nick H247
2

Menghubungkan 6.1 SDK ke Xcode 5 seperti dijelaskan dalam jawaban lain adalah satu langkah. Namun ini masih tidak menyelesaikan masalah yang dijalankan pada iOS 7 elemen UI baru diambil, pengendali tampilan dibuat ukuran penuh dll.

Seperti yang dijelaskan dalam jawaban ini, Anda juga diharuskan untuk mengubah UI ke mode lawas di iOS 7:

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

Hati-hati: Ini adalah kunci tidak berdokumen dan tidak direkomendasikan untuk pembuatan App Store!

Juga, dalam pengalaman saya saat uji coba pada perangkat saya menemukan bahwa itu hanya bekerja kedua kalinya saya meluncurkan aplikasi meskipun saya sedang menjalankan kode cukup awal dalam peluncuran aplikasi, di +[AppDelegate initialize]. Juga ada perbedaan halus untuk versi yang dibangun menggunakan Xcode 4.6. Misalnya, bilah navigasi transparan berperilaku berbeda (menyebabkan tampilan menjadi ukuran penuh).

Namun, karena Xcode 4.6.3 mogok di Mavericks (setidaknya untuk saya, lihat rdar: // 15318883 ), ini setidaknya merupakan solusi untuk terus menggunakan Xcode 5 untuk debugging.

Ortwin Gentz
sumber
1

Saya mengunduh XCode 4 dan mengambil iOS 6.1 SDK dari itu ke XCode 5 seperti yang dijelaskan dalam jawaban lain. Kemudian saya juga menginstal iOS 6.1 Simulator (itu tersedia dalam preferensi). Saya juga mengganti Base SDK ke iOS 6.1 dalam pengaturan proyek.

Setelah semua manipulasi ini proyek dengan 6.1 basis SDK berjalan dalam mode kemampuan khusus di iOS 7 Simulator.

OneSman7
sumber
1

Dari 1 Februari Apple akan menolak aplikasi yang dibangun hanya untuk iOS6 atau lebih rendah. Ini juga komunikasi resmi dari Apple. Lebih baik mulai membangun untuk iOS7.

Untuk memperjelas pernyataan saya: Jika Anda membangun untuk iOS6 atau lebih rendah, apple akan menolak aplikasi Anda. Jika Anda membangun untuk iOS7 DAN menurunkan semuanya baik-baik saja, ini berarti:

  1. Anda harus menggunakan xcode5
  2. setidaknya Anda harus menggunakan iOS7.

Konten email Apple cukup jelas bagi saya

"Pastikan aplikasi Anda bekerja dengan mulus dengan teknologi inovatif di iOS 7. Mulai 1 Februari, aplikasi baru dan pembaruan aplikasi yang dikirimkan ke App Store harus dibangun dengan Xcode 5 dan iOS 7 SDK."

Andrea
sumber
Ya, tetapi iOS 6 SDK juga berfungsi baik dengan iOS 7. Beberapa aplikasi sangat susah untuk ditukar.
Aniruddh Joshi
Saya yakin Anda salah. Apple membutuhkan (a) Dibangun oleh Xcode 5 terbaru, dan (b) dioptimalkan untuk iOS 7. Lihat komentar saya tentang jawaban Rob Napier untuk tautan.
Basil Bourque
Beberapa dari kita mengembangkan distribusi Enterprise dan perlu menargetkan SDK (dan perangkat) yang lebih lama. Aplikasi perusahaan tidak melalui proses Tinjauan Apple dan / atau App Store, dan diskusi ini cukup berguna, tetap relevan, dan akan terus relevan di masa mendatang. Saya mengerti perspektif Anda, tetapi itu bukan satu-satunya.
Kevin OMara
Anda sepenuhnya benar !!! Saya tidak memikirkan distribusi perusahaan. Tapi jangan lupa bahwa Anda masih dapat menggunakan iOS6 dengan Xcode baru hanya dengan menetapkan target penyebaran, tanpa peduli tentang optimasi ios7 dan proses peninjauan.
Andrea
0

Saat ini saya sudah menginstal Xcode 4.6.3 dan 5.0. Saya menggunakan skrip bash berikut untuk menautkan 5.0 ke SDK di versi lama:

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;

Anda hanya perlu menyediakannya dengan jalur ke .app:

./xcode.sh /Applications/Xcode-463.app
Wayne
sumber
Perhatikan bahwa peningkatan ke 5.1 menghapus SDK 7.0.x saya dan menggantinya dengan SDK 7.1. Saya memiliki instalasi lama Xcode5-DP6yang saya dapat memulihkan 7.0.x dari, tetapi ini adalah pengingat yang baik untuk membuat cadangan dir SDK (atau mengubah nama aplikasi sepenuhnya) sebelum memutakhirkan ke atau menginstal versi Xcode terbaru.
Wayne