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.
Odpowiedzi:
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:
źródło
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.
źródło
Tak, właśnie rozwiązałem dzisiaj problem.
Następnie możesz wybrać zestaw SDK jak poniżej:
Mam nadzieję, że to ci pomoże.
źródło
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.1
zamiastiPhoneOS7.0
Działa to świetnie dla mnie w Xcode5 i iOS.
Przejdź do katalogu SDK Xcode5 w reż. Zwykle znajduje się w:
Dodaj symboliczny link do starego zestawu SDK w następujący sposób:
Lub dokładniej z dowolnego miejsca w wierszu poleceń,
źródło
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
źródło
Aby dodać, możesz pobrać stare wersje symulatora za pomocą samego Xcode 5 - po prostu przejdź do preferencji, a znajdziesz je w Pobranych:
źródło
Otwórz okno terminala
Zostaniesz poproszony o podanie hasła, ponieważ jesteś w folderze systemowym
źródło
Dla mnie najprostsze rozwiązanie:
Aby przetestować aplikację w iOS 6 na symulatorze: - Po prostu wybierz iOS 6.0 w aktywnym sheme.
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
Uwaga: po zmianie podstawowego zestawu SDK w elementach docelowych system iOS 7.0 nie będzie już dostępny do budowania na symulatorze!
źródło
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
Więc
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
zawierają 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.
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.
Wybierz cel wdrożenia .
To identyfikuje najwcześniejszą wersję systemu operacyjnego, na której można uruchomić oprogramowanie.
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.
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.
źródło
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:
Na koniec uruchom ponownie Xcode i gotowe.
źródło
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.
źródło
Łą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:
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.
źródło
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.
źródło
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:
Treść e-maila Apple jest dla mnie dość jasna
źródło
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:
Musisz tylko podać ścieżkę do .app:
źródło
Xcode5-DP6
któ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.