Що означає базовий SDK, ціль розгортання iOS, Target та Project у xcode


162

Скажіть, я встановив базовий SDK на 7, що це означає? Це може означати, що додаток працюватиме на iOS 7. Але саме для цього призначена мета розгортання iOS.

Також чому я вказую ці 3 значення як в проекті, так і в цілі. Це не має сенсу. Навіщо вказувати одну і ту ж річ двічі?


На це є хороша стисла відповідь на інше нове запитання: stackoverflow.com/a/41278576/498949
Кріс Ра,

Відповіді:


80

Базовий SDK - це те, на чому ви будуєте додаток (тобто включаєте та бібліотечні файли та рамки). Як ви кажете, це не впливає на ціль розгортання, за винятком базового sdk> = цілі розгортання.

Ви визначаєте налаштування збірки на двох рівнях, оскільки кожен проект може мати кілька цілей, і ви, можливо, не хочете однакових налаштувань для всіх цілей. Налаштування на рівні проекту перевизначають параметри за замовчуванням, а налаштування на рівні цілі замінюють налаштування на рівні проекту.

Наприклад, у мене є проекти з обома цілями OSX та iOS, а деякі - ARC, а деякі - MRR. Я мав би мати різні проекти для кожного, якби мені не вдалося вказати настройки збірки з рівнем деталізації, який дозволяє Xcode.


197

У iOS 7 TechTalk , сесії Архітектура сучасних програм, частина 2, вони це чітко пояснюють

введіть тут опис зображення

Добре читайте Привіт! Я доступний!

Отже, сучасний додаток може використовувати iOS 9 як цільовий SDK, а iOS 7 - як ціль розгортання. Це означає, що ви можете працювати на iOS 7, iOS 8 та iOS 9, і що у вас є доступні будь-які дзвінки iOS 9 під час фактичного запуску на iOS 9.

Ви можете прочитати більше в моєму дописі SDK і цільової розгортання


20
Хороша довідка .. і ця частина похована близько 25:17 у цьому 50-хвилинному відео.
Даніель

2
Приємно! Але що станеться, якщо встановити Base SDK = 7.0 і спробувати встановити в iOS 8.0? Чи потрібно завантажувати останній XCode, щоб постійно підтримувати останню Base SDK?
GoRoS

2
@chichilatte ні, вам не потрібно. Додаток все ще підтримує iOS 12, iOS 13, ..., але в ньому не буде нових функцій iOS 12, iOS 13 .... Щоб використовувати нову функцію iOS 12, вам потрібно компілювати проти iOS 12 SDK і використовувати API від iOS 12.
onmyway133

3
Дякую, це має сенс. Я думаю, що коментар @ Kunal-Balani вище є неправильним.
чичілат

2
@ Kunal-Balani, інші коментатори правильні. Вам не доведеться перекомпілювати додаток, якщо з'являється нова версія ОС, ніж версія, для якої ви створили, якщо вони не видалили підтримку того, що зараз використовує ваш додаток . Новіша ОС не раптом означає, що ваша програма, побудована на основі старих SDK, перестає працювати. Якби це було так, ніхто ніколи не оновлюватиметься, тому що це означатиме, що кожен додаток, який вони мали в даний час, просто перестане працювати, поки не з’являться нові версії, які просто не відповідають дійсності.
Марк А.

67

Базова SDK - це SDK, з яким ви посилаєтесь. Ціль розгортання - це мінімально необхідна версія iOS, яку потрібно запустити. Ви можете створити додаток за допомогою SDK 7, який працює під iOS 6. Але тоді вам слід подбати про те, щоб не використовувати будь-яку функцію чи метод, недоступний для iOS 6. Якщо ви це зробите, ваша програма перестане працювати на iOS 6, як тільки ця функція використовується.

Докладнішу інформацію див. У документації щодо яблук: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.