Co oznacza cel wdrożenia?

110

to jest bardzo proste pytanie, które zakładam. Czy ktoś może mi powiedzieć, co oznacza cel rozmieszczenia. Jeśli wybiorę IOS 10, czy to oznacza, że ​​tylko użytkownicy z iOS 10 mogą pobrać aplikację. Czy źle jest wybrać niższy cel wdrożenia? RÓWNIEŻ, kontynuując w miejscu docelowym wdrożenia, nie zaleca się uruchamiania na niższym celu wdrożenia.

Michaelcode
źródło

Odpowiedzi:

152

Powiedzmy, że masz ustalony cel minimum wdrażania do iOS 9. Oznacza to, że aplikacja jest kompatybilna z iOS 9 i powyżej urządzeń.

Aplikacja nie będzie działać na urządzeniach poniżej 9.0, ale może działać na dowolnej wersji iOS wyższej niż iOS 9.0.

Manish Pathak
źródło
Czy użytkownik z niższą wersją może nadal widzieć aplikację przynajmniej w sklepie z aplikacjami?
Sagrian
2
@Sagrian Tak, ale pokaże im, że nie jest kompatybilny z systemem operacyjnym ich urządzenia
FreakyAli
Jaka jest różnica między celem wdrożenia a informacją? Xcode wybierzmy wersję na iOS w 2 miejscach.
Daniel Springer
@DanielSpringer Ustawienie w Deployment Targetostatecznie zmienia Info.plist. Jest to wygodny sposób dodany (prawdopodobnie) po Xcode 4.x
Naveed Abbas
@NaveedAbbas Przykro mi, ale nie rozumiem, jak to odpowiada. Dlaczego dwa miejsca? Po co jest każdy?
Daniel Springer
19

Cel wdrożenia określa zdolność aplikacji do uruchamiania w starszych wersjach systemu iOS.

App with deployment target set to 10 will work on iOS version 10+ (10, 11, 12, 13 ...) but won't work on 9.x.

Kiedy pojawia się nowa wersja iOS, niektórzy ludzie nie zawracają sobie głowy aktualizacją swoich urządzeń do najnowszej wersji iOS, a tym samym can't download your app from the App Store.

Przykład

Jeśli wybierzesz wyższy cel wdrożenia (e.g 12.1), Twoja aplikacja nie będzie mogła zostać pobrana dla osób, które mają nawet najnowsze urządzenia, ale mają starszą wersję iOS (iPhone X z 11.0). Z drugiej strony Jeśli wybierzesz najniższy możliwy cel wdrożenia (e.g 6.0), postarasz się, aby Twoja aplikacja była maksymalnie kompatybilna wstecz (więc nawet jeśli ktoś nie aktualizował swojego iOS od lat, będzie mógł pobrać Twoją aplikację).

UWAGA

Wiele (prawie wszystkich) nowszych frameworków i funkcji nie będzie działać poprawnie (Zachowaj się zgodnie z oczekiwaniami) na niższych wersjach iOS, co zwiększa prawdopodobieństwo awarii aplikacji.

Co wpływa na cel wdrożenia

Oto kilka czynników, które wymagają wyższego celu wdrożenia.

1) Korzystanie z najnowszego zestawu SDK systemu iOS (samodzielnie)

2) Korzystanie z najnowszych funkcji specyficznych dla iOS SDK (ograniczenia, nowsze pliki XIB itp.).

3) Korzystanie z szybko dostosowujących się zewnętrznych bibliotek / frameworków (np. Facebook SDK, Firebase itp.).

4) Wyższa wersja Swift (5.0) wymaga wyższego celu wdrożenia niż pisanie aplikacji w starszej wersji celu C) !Needs citation.

ROZWIĄZANIE

Używamy Deploymate do maksymalnego wsparcia wstecznego. Pomaga nam głównie w ostrzeżeniu następujących kwestii:

1) Nowsze interfejsy API, które nie będą działać na niższych wersjach iOS

2) Korzystanie z przestarzałych metod, które nie będą działać w nowszych wersjach systemu iOS.

To wtedy zaczynasz naprawiać kod, aby był dostępny dla niższych wersji iOS dla maksymalnej kompatybilności.

Uwaga: Xcode informuje również o kilku pułapkach. Deploymate nie jest z nami współpracownikami ani nie płaci nam w żadnej formie. Możesz poszukać innych zamienników.

Naveed Abbas
źródło
2

Deployment Targetto minimalna wersja iOS obsługiwana przez Twój cel.

To znaczy, że:

  • jako programista wspierasz tę wersję i jesteś w stanie obsłużyć wszystkie następne kompatybilności
  • jako użytkownik powinieneś mieć przynajmniej tę wersję iOS

Aby zmienić to w Xcode 11.5

Build Settings -> iOS Deployment Target
yoAlex5
źródło
-4

Jeśli dopiero zaczynasz korzystać z Xcode, sugeruję zaakceptowanie wartości domyślnej i myślenie o niej jako o ograniczeniu twojego projektu.

Wraz z pojawieniem się nowszych wersji Xcode obsługa starszych wartości docelowych zostanie usunięta. Firmy, które mają rozległe bazy klientów, muszą sobie z tym problemem radzić na swój sposób.

W większości projektów, nad którymi pracowałem, wersja iOS ma znaczenie, ponieważ dyktuje, na których urządzeniach można uruchomić aplikację.

Na przykład iOS 10 zasadniczo pozostawił wszystkie złącza w stylu iPoda.

benc
źródło
1
głosy w dół, ale bez komentarzy ... nieprzydatne ... Dodałbym, że teraz, gdy iOS 13 jest dostępny za pośrednictwem Xcode 11, wiele domyślnych celów w starych projektach musiało zostać przesuniętych w górę.
benc
Uznano za: przydatne informacje „z okopów”. Byłby bardziej odpowiedni jako komentarz, ale mimo wszystko.
timmi4sa
Wolałbym być pragmatykiem z nieco mniejszą liczbą powtórzeń. Bycie nowym w Xcode to dużo do strawienia.
benc