Jakie jest znaczenie podstawowego zestawu SDK, celu wdrożenia systemu iOS, miejsca docelowego i projektu w xcode

162

Powiedzmy, że ustawiłem podstawowy zestaw SDK na 7, co to oznacza? Może to oznaczać, że aplikacja będzie działać na iOS 7. Ale do tego właśnie służy cel wdrożenia iOS.

Dlaczego również określam te 3 wartości zarówno w projekcie, jak i celu. To nie ma sensu. Po co podawać to samo dwa razy?

user4951
źródło
Jest dobra, zwięzła odpowiedź na inne, nowsze pytanie: stackoverflow.com/a/41278576/498949
Chris Rae

Odpowiedzi:

80

Podstawowy zestaw SDK jest tym, na podstawie którego tworzysz swoją aplikację (tj. Pliki dołączania i biblioteki oraz struktury). Jak powiedziałeś, nie wpływa to na cel wdrożenia, z wyjątkiem tego podstawowego sdk> = cel wdrożenia.

Określasz ustawienia kompilacji na 2 poziomach, ponieważ każdy projekt może mieć wiele celów i możesz nie chcieć tych samych ustawień dla wszystkich celów. Ustawienia na poziomie projektu zastępują ustawienia domyślne, a ustawienia na poziomie celu zastępują ustawienia na poziomie projektu.

Na przykład mam projekty z celami OSX i iOS, a niektóre to ARC, a niektóre to MRR. Musiałbym mieć różne projekty dla każdego, gdybym nie był w stanie określić ustawień kompilacji z poziomem szczegółowości, na który pozwala Xcode.

trojanfoe
źródło
197

W TechTalk iOS 7 , sesja Architektonowanie nowoczesnych aplikacji, część 2, wyjaśniają to jasno

wprowadź opis obrazu tutaj

Dobra lektura Cześć! Jestem dostępny!

Dlatego nowoczesna aplikacja może używać systemu iOS 9 jako docelowego zestawu SDK i systemu iOS 7 jako celu wdrożenia. Oznacza to, że możesz działać na iOS 7, iOS 8 i iOS 9 i że masz dostępne wszystkie połączenia iOS 9, gdy faktycznie działa na iOS 9.

Możesz przeczytać więcej w moim poście SDK i cel wdrożenia

onmyway133
źródło
20
Dobre odniesienie ... i ta część jest pochowana około 25:17 w tym 50-minutowym filmie.
Daniel
2
Miły! Ale co się stanie, jeśli ustawisz podstawowy zestaw SDK = 7.0 i spróbujesz zainstalować go w systemie iOS 8.0? Czy musimy pobierać ostatni kod XCode, aby przez cały czas obsługiwać najnowszy Base SDK?
GoRoS
2
@chichilatte no, nie potrzebujesz. Aplikacja nadal obsługuje iOS 12, iOS 13, ... ale nie będzie miała żadnych nowych funkcji iOS 12, iOS 13 .... Aby korzystać z nowej funkcji iOS 12, musisz skompilować z SDK iOS 12 i użyć Interfejsy API z iOS 12.
onmyway133
3
Dzięki, to ma sens. Myślę, że powyższy komentarz @ Kunal-Balani jest błędny.
chichilatte
2
@ Kunal-Balani, inni komentatorzy mają rację. Nie musisz ponownie kompilować aplikacji, jeśli pojawi się nowsza wersja systemu operacyjnego niż ta, dla której została utworzona, chyba że usunęli obsługę tego, z czego obecnie korzysta Twoja aplikacja . Nowszy system operacyjny nie oznacza nagle, że Twoja aplikacja utworzona na podstawie starszego zestawu SDK przestaje działać. Gdyby tak było, nikt nigdy nie przeprowadziłby aktualizacji, ponieważ oznaczałoby to, że każda obecnie posiadana aplikacja przestałaby działać, dopóki nie pojawią się nowsze wersje, co po prostu nie jest prawdą.
Mark A. Donohoe
67

Podstawowy zestaw SDK to zestaw SDK, z którym łączysz się. Cel wdrożenia to minimalna wymagana wersja systemu iOS, którą aplikacja musi uruchomić. Możesz zbudować aplikację za pomocą SDK 7, która działa pod iOS 6. Ale wtedy musisz uważać, aby nie używać żadnej funkcji lub metody, która nie jest dostępna w iOS 6. Jeśli to zrobisz, Twoja aplikacja ulegnie awarii w iOS 6, gdy tylko ta funkcja jest używana.

Więcej informacji można znaleźć w dokumentacji Apple: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html

V1ru8
źródło