2010-06-22 23 views
5

Zainstalowałem SDK 4.0 i stwierdziłem, że utraciłem dostęp do wszystkich poprzednich wersji SDK przed wersją 3.2.Base SDK 3.0 do SDK 4.0

Znalazłem link do pobrania SDK 3.1.3, więc mam oba pliki instalacyjne .dmg.

Pytania:

Does SDK 4.0 nie umożliwiają dostępu do poprzedniej wersji?

Jeśli powyższa odpowiedź brzmi "nie", czy oznacza to, że muszę mieć zainstalowane dwie wersje zestawu SDK?

Jeśli tak, powyższe ... w jaki sposób?

Dzięki z nadzieją

+0

możliwy duplikat [Zepsuty pakiet SDK podczas instalowania nowych wersji XCode z Iphone SDK?!] (Http://stackoverflow.com/questions/3000241/sdks-disapearing-when-installing-new-versions-of-xcode- with-iphone-sdk) – zoul

+0

Możesz używać SDK4.0 i kierować wcześniejsze urządzenia. Jest to szczegółowo omówione w [poprzednim pytaniu] (http://stackoverflow.com/questions/3027120/how-to-make-iphone-app-for-multiple-firmwares/3027213#3027213). – progrmr

Odpowiedz

0

Celem wdrożenia może być ustawiony na cokolwiek (nawet 2.2), ale SDK podstawa ma nic oprócz 3,2 i 4,0. Sądziłem, że jeśli ustawisz cel wdrażania na 3.0, na przykład Base SDK może być ustawiony na 3.0.

Tak więc, jeśli pakiet SDK do wdrażania ma wartość 3.0, a podstawowy pakiet SDK to 4.0, dla którego jest kompilowany?
Uwaga w nowym pakiecie SDK nie można wybrać niczego oprócz wersji 3.2 i 4.0, jak wspomniano powyżej.

+0

Proszę, czy ktoś może pomóc? Wydaje się głupim, że musisz mieć zainstalowane dwie wersje XCode i skompilować tę samą aplikację, aby móc pracować nad wcześniejszymi wersjami? Po to, aby potwierdzić, zainstalowałem SDK 4.0, a teraz mam tylko cele 3.2 i 4.0? Jeśli chcę zbudować coś mniejszego, muszę zamknąć XCode i otworzyć wcześniejszą wersję, która daje mi dostęp do tych celów poniżej 3.2. Dziwnie w folderze dla programistów w wersji 4.0 wyświetla listę wszystkich zestawów SDK wcześniejszych obiektów docelowych, ale nie pozwala mi uzyskać do nich dostępu z poziomu XCode. POMOC! proszę ..... Dzięki – user7865437

+0

Chris, http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html ma dobre wyjaśnienie, w jaki sposób cel wdrożenia i baza Ustawienia SDK działają i jak Twoja skompilowana aplikacja rozwiąże symbole. –

0

Wygląda na problem z jabłkiem. Dostaję także: "Base SDK Missing" po zainstalowaniu Snow Leopard i iPhone SDK 4. W moim przypadku nie ma Base SDK. Jestem początkującym w systemie i mającym na celu uczynienie tego komentarza, a nie odpowiedzi.

AKTUALIZACJA: Po przeczytaniu pliku Readme dołączonego do zestawu SDK 4 nieco bliżej, widzę, że (XCode 3.2.3 i jego iPhone SDK4) nie obsługuje telefonu iPhone przed wersją 3.2 - rozwiązaniem jest zainstalowanie starszych wersji SDK w innym katalogu. Nie zapomnij również zaktualizować swojego urządzenia, jeśli używasz nowszego xCode/SDK.
KOLEJNA AKTUALIZACJA:
Proszę zignorować tę odpowiedź i zobaczyć powyższy, który został dostarczony przez aizuchi. Nie zapomnij przeczytać części o Base SDK, która różni się od Deployment.

+1

To jest nieprawidłowe. Nie ma powodu, aby zainstalować więcej niż jedną kopię XCode, nawet jeśli chcesz obsługiwać starsze wersje systemu operacyjnego. – user342492

+0

Wierzę, że masz rację. Zajęło mi dużo czasu, aby w końcu zrozumieć, co powiedziałeś na temat "iPhone OS Deployment Target" i jest to miejsce, w którym można uzyskać wsparcie dla starszych wersji systemu operacyjnego. Podstawowy pakiet SDK uruchamia się po ustawieniu na wartość 3.2 lub 4.0 - W takim przypadku pole Rozmieszczanie znajduje się kilka ekranów poniżej. W każdym razie, dziękuję bardzo za twoje odpowiedzi! – MCroswell

7

Terminologia jest myląca, ale gdy już to zrozumiesz, łatwo.

"Podstawowy zestaw SDK" to tylko wersja zestawu SDK, którego kompilujesz. Więc możesz użyć dowolnej klasy, właściwości lub metod w Base SDK.

Wersja wdrożenia to najwcześniejsza wersja systemu operacyjnego, na którą użytkownicy mają mieć możliwość uruchamiania kodu. Jeśli używasz funkcji dostępnej w wersji Base SDK, ale nie w wersji Deployment, to twój kod uruchomi się w obu wersjach, ale ulegnie awarii w poprzedniej wersji systemu operacyjnego, gdy użyjesz nowej funkcji, więc musisz sprawdzić, czy nowa funkcja jest obecny, jeśli chcesz to zrobić.

Więc nie potrzebujesz Base SDK 3.0, aby działać w wersji 3.0 - wystarczy ustawić Base SDK na 4.0 i wersję wdrożenia na 3.0 i nie używać żadnych funkcji SDK, które nie były obecne poza 3.0.

+0

cześć, tak, rozumiem to, prawdopodobnie zadałem pytanie źle. Mój problem polega na tym, że nie widzę już wersji wdrożenia poniżej wersji 3.2? – user7865437

+0

Ah ha! Rozumiem, ale widzę, dlaczego powstało moje zamieszanie. "Więc nie potrzebujesz Base SDK 3.0, aby działać w wersji 3.0 - wystarczy ustawić Base SDK na 4.0 i wersję wdrożenia na 3.0 i nie używać żadnych funkcji SDK, które nie były obecne poza 3.0." Wykonuje się to za pomocą formularza konfiguracji kompilacji, który następnie pozwala wybrać poprzednie wersje. Zwykły sposób, w jaki to robiłem, wynika z opcji urządzenia, która służyła do wyświetlania wszystkich poprzednich wersji, podczas gdy teraz z SDK 4 nie. Cóż, przynajmniej mam to działa teraz :-) Dzięki – user7865437

+1

Czy to oznacza, że ​​nie ma możliwości powiedzieć przed uruchomieniem, że przypadkowo użyłeś nowego API? – jamesh

0

Jak rozumiem, używanie SDK innych niż 3,2 i 4,0 jest obecnie przestarzałe w przypadku przesyłania do sklepu z aplikacjami. Logicznie rzecz biorąc, te inne pakiety SDK również nie są już opcjami w kodzie xCode (3.2.3). IMO, próba obejścia tego jest daremna. Napisałem wiki społeczności, które objaśnia to bardziej szczegółowo: here.

+0

Dlaczego i tak chcesz to "ominąć"? Możesz ustawić cel wdrożenia i to tak, jakby nic się nie zmieniło. – typeoneerror

+0

Fałsz na wielu poziomach. Po pierwsze, wydaje mi się, że nieporozumienia dotyczą celu wdrożenia. AFAIK, to tylko flaga dla sklepu z aplikacjami, i nadal masz dostęp do pełnego API "Base SDK", bez ostrzeżeń. Jesteś odpowiedzialny tylko za warunkowe korzystanie z interfejsów API, które znajdują się powyżej miejsca docelowego wdrożenia. E.g mój cel wdrożenia to 3.0, ale mogę utworzyć instancję UIGestureRecognizer (3.2+). W polu, które spowoduje błąd. Co więcej, niektórzy ludzie mogą chcieć "obejść to", np. W sensie uruchomienia starszego symulatora, czegoś, co udało się zrobić do tej pory dzięki każdej aktualizacji xCode. –

0

Należy ustawić Base SDK na najnowszą wersję i na przykład ustawić Target Deployment dla iPhone'a na 3.0.

Zalecamy przetestowanie aplikacji pod kątem wcześniejszych wersji.

Powiązane problemy