Apa arti Base SDK, target penyebaran iOS, Target, dan Project dalam xcode

161

Katakanlah saya mengatur basis SDK ke 7, apa artinya? Ini bisa berarti bahwa aplikasi tersebut akan berjalan di iOS 7. Tetapi untuk itulah tujuan penyebaran iOS.

Juga mengapa saya menentukan 3 nilai tersebut di proyek dan target. Itu tidak masuk akal. Mengapa menentukan hal yang sama dua kali?

pengguna4951
sumber
Ada jawaban ringkas yang bagus untuk ini pada pertanyaan lain yang lebih baru: stackoverflow.com/a/41278576/498949
Chris Rae

Jawaban:

79

SDK dasar adalah tujuan Anda membangun aplikasi (misalnya, sertakan dan pustaka file dan kerangka kerja). Seperti yang Anda katakan, itu tidak mempengaruhi target penempatan, kecuali basis SDK> = target penempatan.

Anda menentukan pengaturan bangunan pada 2 level karena setiap proyek dapat memiliki beberapa target dan Anda mungkin tidak ingin pengaturan yang sama untuk semua target. Pengaturan tingkat proyek mengesampingkan pengaturan standar dan pengaturan tingkat target mengesampingkan pengaturan tingkat proyek.

Sebagai contoh, saya memiliki proyek dengan target OSX dan iOS dan beberapa ARC dan beberapa MRR. Saya harus memiliki proyek yang berbeda untuk masing-masing jika saya tidak dapat menentukan pengaturan build dengan tingkat granularity yang memungkinkan Xcode.

trojanfoe
sumber
196

Di iOS 7 TechTalk , sesi Architecting Modern Apps, Bagian 2, mereka menjelaskan ini dengan jelas

masukkan deskripsi gambar di sini

Bagus dibaca Hai! Saya tersedia!

Jadi, Aplikasi modern mungkin menggunakan iOS 9 sebagai Target SDK, dan iOS 7 sebagai target penyebaran. Ini berarti bahwa Anda dapat berjalan di iOS 7, iOS 8 dan iOS 9, dan bahwa Anda telah tersedia untuk Anda panggilan iOS 9 saat benar-benar berjalan di iOS 9.

Anda dapat membaca lebih lanjut di SDK dan Target Penempatan posting saya

onmyway133
sumber
20
Referensi yang bagus .. dan bagian ini dimakamkan sekitar 25:17 dalam video 50 menit ini.
Daniel
2
Bagus! Tetapi apa yang terjadi jika Anda mengatur Base SDK = 7.0 dan Anda mencoba menginstal ke iOS 8.0? Apakah kita harus mengunduh XCode terakhir untuk mendukung Base SDK terbaru setiap saat?
GoRoS
1
@GoRoS aplikasi Anda tidak akan didukung jika sdk berbasis <iOS 8 (pengguna tidak dapat menginstal dari app store). Karena UIKit / Foundation adalah perpustakaan yang dinamis, Jika dipaksakan melalui Xcode atau hal-hal biner mungkin hanya berfungsi tetapi aplikasi bisa macet kapan saja dan biasanya tidak stabil. Basis SDK selalu berjalan dengan versi Xcode yang sesuai. Namun, Base SDK untuk Xcode adalah untuk simulator yang pada perangkat mungkin berbeda. Jadi, penting untuk menguji hal-hal pada perangkat nyata sebelum Anda mengirim. Itulah masalah dengan semua perpustakaan dinamis.
Kunal Balani
2
@chichilatte tidak, Anda tidak perlu. Aplikasi ini masih mendukung iOS 12, iOS 13, ... tetapi tidak memiliki fitur baru iOS 12, iOS 13 .... Untuk menggunakan fitur baru iOS 12, Anda harus melakukan kompilasi terhadap iOS 12 SDK dan menggunakan API dari iOS 12.
onmyway133
2
Terima kasih, itu masuk akal. Saya kira komentar Kunal-Balani di atas salah.
chichilatte
67

Base SDK adalah SDK yang Anda tautkan. Target Penempatan adalah versi iOS minimum yang diperlukan yang harus dijalankan oleh aplikasi. Anda dapat membangun aplikasi dengan SDK 7 yang berjalan di bawah iOS 6. Tetapi kemudian Anda harus berhati-hati untuk tidak menggunakan fungsi atau metode apa pun yang tidak tersedia di iOS 6. Jika ya, aplikasi Anda akan macet di iOS 6 segera setelah fungsi ini digunakan.

Lihat dokumentasi apel untuk detail lebih lanjut: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html

V1ru8
sumber