Czy można zainstalować iOS 6 SDK na Xcode 5?

250

Xcode 5 ma panel preferencji, który pozwala pobrać symulator iPhone'a 6.1, jednak nie mogę znaleźć miejsca, w którym można pobrać zestaw SDK dla systemu iOS 6, dlatego nie można ustawić aktywnego zestawu SDK na system iOS 6 podczas programowania z Xcode 5 Czy istnieje obejście, które pozwala Xcode 5 zainstalować pakiet SDK dla iOS 6?

EDYTOWAĆ:

Obejścia nie powinny być już konieczne, ponieważ Xcode 5 jest ogólnie dostępny i umożliwia pobieranie poprzednich wersji zestawu SDK.

wprowadź opis zdjęcia tutaj

Tony
źródło
41
Aby skorzystać z wielu ulepszeń w Xcode 5, wciąż będąc w stanie zbudować aplikację dla dzisiejszego sklepu z aplikacjami.
Tony
61
Hej, maddy, kwestia „i tak przyjęcia iOS 7” nie jest całkowicie związana z wydaniem GA. Decyzja i wysiłek związany z przeprojektowaniem całego języka projektowania aplikacji i interfejsu użytkownika w celu dostosowania jej do płaskiej konstrukcji i przeprojektowanych komponentów interfejsu użytkownika iOS7 nie jest mały, ani nie może być łatwy z perspektywy biznesowej i czasowej. Budowanie w oparciu o SDK 6.1 będzie wymagało, aby iOS7 używał języka projektowania interfejsu iOS 6 i wcześniejszych (do celów obsługi wstecznej). Dlatego może być bardzo uzasadnione, że chcemy opracować Xcode 5 w stosunku do zestawu SDK 6.1, aby uzyskać dobry czas.
Marchy,
2
hmmm może dlatego, że spodziewa się, że SDK zostanie oddzielony od IDE, zamiast jednego monolitycznego stosu kodu?
phreakhead
1
Obecnie pracuję z klientem, który nie jest gotowy na zmiany w interfejsie IOS7, ale może skorzystać z ulepszeń migracji danych podstawowych w XCode 5. Tak więc w tym przypadku właśnie tego chcę.
Droid Chris
Można by pomyśleć, że Xcode, jeśli nie zawiera SDK 6.1, przynajmniej zintegruje go płynnie. Ale potem jest ten problem .
JohnK,

Odpowiedzi:

203

EDYCJA: Od 1 lutego 2014 r. Apple nie będzie już akceptować aplikacji starszych niż iOS7 do przesłania do App Store. Chociaż ta technika nadal działa, nie będzie ona przydatna dla większości czytelników.


Tak, w porządku. Nadal buduję z iOS 4.3 dla jednego projektu (minęło trochę czasu, odkąd zaktualizowaliśmy; ale nadal zaakceptowali to po wydaniu iOS 6), a obecnie buduję aplikacje 10.5 z Xcode 5.

Zobacz Jak skierować Xcode na stary zestaw SDK, aby można go było używać jako „podstawowego zestawu SDK”? szczegółowe informacje na temat konfiguracji. Możesz użyć mojego skryptu fix-xcode, aby połączyć wszystko za każdym razem, gdy aktualizujesz.

Jedyną sztuczką jest zdobycie starych zestawów SDK. Jeśli ich nie masz, zazwyczaj musisz pobrać starsze wersje Xcode (nadal dostępne na developer.apple.com ), otworzyć pakiet instalatora i poszukać odpowiedniego pakietu SDK.

Zestawy SDK można znaleźć w pakiecie instalatora pod adresem:

Xcode.app/Contents/Developer/Platforms/

Rob Napier
źródło
czy musisz usunąć pakiet iOS 7 SDK podczas archiwizacji, aby mieć pewność, że zostanie on skompilowany przy użyciu zestawu SDK iOS 6?
ohayon
6
cześć. to jest blisko, ale nie do końca dla mnie. przyciski wyglądają jak iOS 6, ale zawartość kontrolera widoku nadal przesuwa się za pasek nawigacji podczas korzystania z UINavigationController. jakieś przemyślenia na temat tego, jak uzyskać dla tego zachowanie iOS 6?
matt bezark 21.09.2013
2
Nie; zobaczysz to tylko na urządzeniu. W symulatorze iOS 7 nie ma trybu zgodności z iOS 6. Jeśli chcesz zobaczyć, jak to wygląda w symulatorze, przetestuj na symulatorze iOS 6.
Rob Napier
1
Czy mogę przesłać aplikację zbudowaną z Xcode 5 i iOS 6 SDK do App Store?
hujunfeng
1
Tak długo, jak iPad 1 jest nadal obsługiwany, zawsze możesz założyć, że Apple zaakceptuje 5.X iOS. Nie można go uaktualnić.
ahwulf
60

Miałem również ten sam problem, kiedy zaktualizowałem xcode 5, aby usunąć starszy sdk. Ale wziąłem kopię starszego zestawu SDK z innego komputera i ten sam można pobrać z następującego linku.

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

Istnieją 2 sposoby pracy.

1) Rozpakuj i wklej ten folder do /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs i ponownie uruchom xcode.

Ale może to zostać ponownie usunięte przez Xcode, jeśli zaktualizujesz xcode.

2) Innym sposobem jest rozpakowanie i wklejenie tam, gdzie chcesz i przejdź do /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs i utwórz tutaj symboliczny link, aby SDK pozostał taki sam, nawet jeśli zaktualizujesz Xcode.

Kolejna zmiana, którą wprowadziłem, Ustawienia kompilacji> Architektury> standard (nie 64), więc wypisz wszystkie wersje Docelowego wdrożenia

Nie musisz pobierać pliku zip, jeśli chcesz tylko zmienić miejsce docelowe wdrożenia.

Oto kilka zrzutów ekranu. wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

AvtarSingh Suchariya
źródło
2
jak i skąd pobrałeś ten sosk ios6.1? Szukam systemu iOS 5 SDK do pracy z moim Xcode 5. Czy możesz go załadować lub wskazać we mnie, gdzie sam mogę go pobrać. Dziękuję
Sam B
Właściwie mam też stary system. więc wziąłem to ze starszego xcode. To samo próbowałem dla ios sdk 5, ale ponieważ niewiele potrzebowałem, nie próbowałem tego wyciągnąć. Ponadto, jeśli ta odpowiedź wydaje się dobra, cenię twoją opinię w kategoriach + lub -. Dziękuję Ci.
AvtarSingh Suchariya
1
Hej Avtar, pobrałem twój ios6 zip, rozpakowałem go pod wymienioną ścieżką lokalizacji, całkowicie zamknąłem xcode 5, ponownie go uruchomiłem, a mimo to nadal widzę tylko 7,0 jako cel do wdrożenia w rozwijanej opcji. Zakładam, że brakuje kroków i jest coś więcej?
Sam B,
To samo działa dla mnie. Tylko pytanie, czy dodałeś to do samej aplikacji xcode, czy stworzyłeś symboliczny link?
AvtarSingh Suchariya
bezpośrednio do samej aplikacji.
Sam B,
34

Tak, właśnie rozwiązałem dzisiaj problem.

  1. Znajdź plik SDK, na przykład iPhoneOS6.1.sdk, w starszym katalogu Xcode Twojego lub znajomego.
  2. Skopiuj i umieść w katalogu Xcode 5: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

wprowadź opis zdjęcia tutaj

Następnie możesz wybrać zestaw SDK jak poniżej:

wprowadź opis zdjęcia tutaj

Mam nadzieję, że to ci pomoże.

Jason Lee
źródło
2
Zrobiłem to samo, ale mój GUI zmian aplikacji i wygląda na GUI iOS 7. Wybrałem symulator iPhone Retina (4-calowy 64-bitowy) do uruchomienia aplikacji. Po wykonaniu tej czynności brakuje mi niczego innego.
python
20

Znajdź i pobierz stary zestaw SDK. Starsze zestawy SDK można znaleźć tutaj .

Skopiowałem katalog xcode.app jako Xcode_4.6.3.app.

Teraz możesz testować i debugować w obu wersjach xcode. Musisz je uruchomić z odpowiednich folderów lub utworzyć skróty na pulpicie. Podczas budowania z wiersza poleceń podaj parametr iPhoneOS6.1zamiastiPhoneOS7.0

Działa to świetnie dla mnie w Xcode5 i iOS.

Przejdź do katalogu SDK Xcode5 w reż. Zwykle znajduje się w:

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

Dodaj symboliczny link do starego zestawu SDK w następujący sposób:

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

Lub dokładniej z dowolnego miejsca w wierszu poleceń,

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
źródło
Możemy użyć tej opcji do przetestowania naszej aplikacji, ale prawdopodobnie po lutym 2014 r. Żadna aplikacja zbudowana na wcześniejszym systemie iOS 7 SDK nie będzie akceptowana w sklepie z aplikacjami!
karim
11

Możesz pobrać starszy zestaw SDK i zainstalować go

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

teczka. Wyloguj się + Zaloguj się, aby upewnić się, że zmiany zostaną wprowadzone, i powinieneś zobaczyć starszy SDK w nowym XCode

unspokenblabber
źródło
Zrobiłem to (używając linku do pobrania we wcześniejszej odpowiedzi), a wybór SDK dla iOS 6.1 pojawia się w xcode 5 w Ustawieniach kompilacji> Architektury> Podstawowy zestaw SDK. Jednak gdy buduję i uruchamiam na symulatorze iOS 7 (lub urządzeniu iOS 7), nadal używam przycisków UIKit dla iOS 7 (nie wersje iOS 6). Jeśli ktoś ma jakieś sugestie, dlaczego, byłbym wdzięczny ....
Bill Patterson
Jeśli masz zainstalowany TimeMachine, możesz otworzyć powyższą ścieżkę (w typie terminala: otwórz „/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/”) i stamtąd przywrócić SDK iOS6.1 .
avance
11

Aby dodać, możesz pobrać stare wersje symulatora za pomocą samego Xcode 5 - po prostu przejdź do preferencji, a znajdziesz je w Pobranych:

wprowadź opis zdjęcia tutaj

Smikey
źródło
To musiało się stać, odkąd xcode 5 wyszedł z wersji beta i jest teraz wersją ogólną. Dobrze wiedzieć, dziękuję Smikey
Tony
5
@Manni Nie jest to to samo, co kompilowanie ze starym API. Budujesz przy użyciu nowego API dla iOS 6.
oligofren
Te opcje nie pojawiają się domyślnie na Xcode 6, nawet jeśli ustawiłeś starszą platformę docelową.
GilesDMiddleton
10
  • Pobierz Xcode 4.6.x z Apple Dev Center: https://developer.apple.com/downloads/index.action
  • Utwórz folder o nazwie Xcode4 w folderze Aplikacje i przeciągnij tam przeciągnięty plik dmg.
  • Otwórz okno terminala

    $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/
  • Zostaniesz poproszony o podanie hasła, ponieważ jesteś w folderze systemowym

  • Otwórz Xcode 5 i powinieneś teraz zobaczyć oba zestawy SDK
autremoi
źródło
10

Dla mnie najprostsze rozwiązanie:

  1. Znajdź starszy zestaw SDK, na przykład „iPhoneOS6.1 sdk”, na przykład w starszej wersji xcode. Jeśli nie, możesz pobrać go z serwera Apple Developer pod tym adresem: https://developer.apple.com/downloads/index.action?name=Xcode Po otwarciu pliku xcode.dmg można go znaleźć, otwierając Xcode.app (kliknij prawym przyciskiem myszy i „pokaż zawartość”) i przejdź do Spis treści / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS6.1 sdk wprowadź opis zdjęcia tutaj
  2. Prosty Skopiuj folder iPhoneOS6.X sdk i wklej go do xcode.app
    • kliknij prawym przyciskiem myszy swój xcode.app w folderze Aplikacje.
    • Idź do Spisu treści / Deweloper / Platformy / iPhoneOS.platform / Deweloper / SDK /
    • Po prostu wklej tutaj.

wprowadź opis zdjęcia tutaj

  1. Zamknij aplikację xcode i otwórz ją ponownie.

Aby przetestować aplikację w iOS 6 na symulatorze: - Po prostu wybierz iOS 6.0 w aktywnym sheme. wprowadź opis zdjęcia tutaj

Aby zbudować aplikację w systemie iOS 6, więc projekt aplikacji będzie starszą wersją na iPhonie z systemem iOS 7 również: - Wybierz iOS 6.1 w Celach - Podstawowy zestaw SDK

wprowadź opis zdjęcia tutaj

Uwaga: po zmianie podstawowego zestawu SDK w elementach docelowych system iOS 7.0 nie będzie już dostępny do budowania na symulatorze!

Daniel C.
źródło
9

Mogę to zrobić , ale tak naprawdę nie jest to konieczne

Jak to zrobić

Jason Lee otrzymał odpowiedź. Podczas instalowania xCode wolałem zachować poprzednie instalacje niż je zastępować. Mam je więc w folderze instalacyjnym

wprowadź opis zdjęcia tutaj

Więc /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKszawierają różne pliki SDK. (Zamień Xcode.app na prawidłowy numer) skopiuj poprzednie sdks do

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

Oto mój folder po skopiowaniu jednego.

wprowadź opis zdjęcia tutaj

Teraz uruchom ponownie xCode i możesz ustawić poprzednie wersje sdk jako podstawowy sdk.

Dlaczego nie jest to konieczne

Odnawianie dokumentacji Apple

Aby użyć określonego zestawu SDK dla projektu Xcode, dokonaj dwóch wyborów w ustawieniach kompilacji projektu.

  1. Wybierz cel wdrożenia .

    To identyfikuje najwcześniejszą wersję systemu operacyjnego, na której można uruchomić oprogramowanie.

  2. Wybierz podstawowy zestaw SDK

    Twoje oprogramowanie może korzystać z funkcji dostępnych w wersjach systemu operacyjnego do wersji odpowiadającej podstawowym pakietom SDK włącznie. Domyślnie Xcode ustawia to na najnowszy system operacyjny obsługiwany przez Xcode.

Reguła jest Użyj najnowszej jako podstawowego zestawu SDK i ustaw docelowy poziom wdrożenia na minimalną wersję aplikacji, która ma być uruchomiona

Na przykład możesz użyć systemu iOS 7 jako podstawowego pakietu SDK i ustawić system iOS 6 jako cel wdrażania. Uruchom na symulatorze iOS 6, aby sprawdzić, jak działa na iOS 6. Zainstaluj symulator, jeśli nie jest dostępny z listą symulatorów.

wprowadź opis zdjęcia tutaj

Dodatkowo Możesz bezwarunkowo używać funkcji do iOS 6. I warunkowo możesz obsługiwać nowe funkcje iOS 7 dla nowych zaktualizowanych urządzeń, jednocześnie obsługując poprzednie wersje.

Można to zrobić za pomocą słabo powiązanych klas , słabo powiązanych metod , funkcji i symboli

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

Słabe łączenie

Załóżmy, że w Xcode ustawiłeś docelowy poziom wdrożenia (minimalna wymagana wersja) na iOS6, a docelowy zestaw SDK (maksymalna dozwolona wersja) na iOS7. Podczas kompilacji kompilator słabo łączy wszystkie interfejsy wprowadzone w iOS7, jednocześnie silnie łącząc wcześniejsze interfejsy. Pozwoliłoby to kontynuować działanie aplikacji na iOS6, ale nadal korzystać z nowszych funkcji, gdy są one dostępne.

MadNik
źródło
4

Inne odpowiedzi tutaj są również poprawne, ale uważam, że następujące kroki są najłatwiejsze:

Wystarczy pobrać Xcode 4.6.3 z linku centrum deweloperów, który mówi „Szukasz starszej wersji Xcode?” (obecnie wskazuje tutaj ) i zamontuj dmg.

Następnie w terminalu skopiuj pliki SDK na:

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/

Na koniec uruchom ponownie Xcode i gotowe.

nioq
źródło
3

Moja aplikacja została bezproblemowo przeniesiona do Xcode 5, ponieważ nadal można ją budować przy użyciu oryginalnego celu wdrożenia iOS, który ustawiłeś w projekcie (w moim przypadku 5.1). Jeśli nowy zestaw SDK nie powoduje problemów nie do pokonania, to dlaczego nie zbudować go przy użyciu? Z pewnością jest wiele ulepszeń pod maską.

Na przykład wolę używać Xcode 5 zamiast Xcode 4.6.3. Czemu? Dostanę o wiele dłuższą żywotność baterii, ponieważ przewijanie UI obszarów tekstowych / kodowych w Xcode 5 już nie zrywa całego wątku procesora.

Steven Lu
źródło
Powody, dla których nie należy - Xcode 5 jest obecnie dość niestabilny. U mnie co godzinę. Również niektóre dziwne problemy z pozycjonowaniem i problemy z kolorem w niektórych widokach (choć nie wiele pracy do naprawienia)
Nick H247,
2

Łączenie zestawu 6.1 SDK z Xcode 5, jak opisano w innych odpowiedziach, jest jednym krokiem. Jednak to nadal nie rozwiązuje problemu polegającego na tym, że na iOS 7 pobierane są nowe elementy interfejsu użytkownika, kontrolery widoku są pełnowymiarowe itp.

Jak opisano w tej odpowiedzi , wymagane jest również przełączenie interfejsu użytkownika do trybu starszego typu na iOS 7:

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

Uwaga: jest to nieudokumentowany klucz, który nie jest zalecany do wersji App Store!

Z doświadczenia wynika, że ​​podczas testowania urządzenia stwierdziłem, że działa ono dopiero przy drugim uruchomieniu aplikacji, mimo że uruchamiam kod dość wcześnie w fazie uruchamiania aplikacji, w +[AppDelegate initialize]. Istnieją również subtelne różnice w stosunku do wersji zbudowanej przy użyciu Xcode 4.6. Na przykład przezroczyste paski nawigacyjne zachowują się inaczej (powodując, że widok jest pełnowymiarowy).

Jednak ponieważ Xcode 4.6.3 ulega awarii na Mavericks (przynajmniej dla mnie, patrz rdar: // 15318883 ), jest to co najmniej rozwiązanie, aby nadal używać Xcode 5 do debugowania.

Ortwin Gentz
źródło
1

Pobrałem XCode 4 i wziąłem z niego pakiet iOS 6.1 SDK do XCode 5, jak opisano w innych odpowiedziach. Następnie zainstalowałem także iOS 6.1 Simulator (był dostępny w preferencjach). W ustawieniach projektu zmieniłem także Podstawowy zestaw SDK na iOS 6.1.

Po wszystkich tych manipulacjach projekt z sdk bazowym 6.1 działa w trybie zgodności w symulatorze iOS 7.

OneSman7
źródło
1

Od 1 lutego Apple odrzuci aplikację zbudowaną tylko na iOS6 lub starszą wersję. Oto także oficjalna komunikacja Apple. Lepiej zacznij budować dla iOS7.

Aby wyjaśnić moje stwierdzenie: Jeśli budujesz dla iOS6 lub starszej wersji, Apple odrzuci twoją aplikację. Jeśli budujesz dla iOS7 ORAZ niższej wszystko jest w porządku, oznacza to:

  1. musisz użyć xcode5
  2. powinieneś wdrożyć przynajmniej na iOS7.

Treść e-maila Apple jest dla mnie dość jasna

„Upewnij się, że Twoje aplikacje działają bezproblemowo z innowacyjnymi technologiami w iOS 7. Od 1 lutego nowe aplikacje i aktualizacje aplikacji przesłane do App Store muszą być zbudowane z Xcode 5 i iOS 7 SDK”.

Andrea
źródło
Tak, ale zestaw SDK dla iOS 6 również dobrze działa z iOS 7. Niektóre aplikacje wymagają przełączania.
Aniruddh Joshi
Uważam, że się mylisz. Apple wymaga (a) Zbudowanego przez najnowszy Xcode 5 i (b) zoptymalizowanego dla iOS 7. Zobacz linki w komentarzu do odpowiedzi Roba Napiera .
Basil Bourque,
Niektórzy z nas opracowują dystrybucję dla przedsiębiorstw i muszą celować w starsze zestawy SDK (i urządzenia). Aplikacje dla przedsiębiorstw nie podlegają procesowi Apple Review i / lub App Store, a ta dyskusja jest dość przydatna, pozostaje aktualna i będzie nadal aktualna w przyszłości. Rozumiem twoją perspektywę, ale to nie jedyna.
Kevin OMara
Masz całkowitą rację!!! Nie myślałem o dystrybucji korporacyjnej. Ale nie zapominaj, że nadal możesz wdrożyć na iOS6 z nowym Xcode, po prostu ustawiając cel wdrożenia, nie troszcząc się o proces optymalizacji i przeglądu ios7.
Andrea
0

Obecnie mam zainstalowany Xcode 4.6.3 i 5.0. Użyłem następującego skryptu bash, aby połączyć 5.0 z zestawami SDK w starej wersji:

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;

Musisz tylko podać ścieżkę do .app:

./xcode.sh /Applications/Xcode-463.app
Wayne
źródło
Zauważ, że aktualizacja do 5.1 usunęła mój SDK 7.0.x i zastąpiła go 7.1 SDK. Mam starą instalację, z Xcode5-DP6której udało mi się odzyskać 7.0.x, ale jest to dobre przypomnienie, aby wykonać kopię zapasową katalogów SDK (lub całkowicie zmienić nazwę aplikacji) przed uaktualnieniem lub zainstalowaniem najnowszej wersji Xcode.
Wayne