Czy można kierować reklamy na starsze wersje iOS, używając Xcode 4.2 i iOS 5 SDK?

103

Niedawno pobrałem Xcode 4.2 z pakietem SDK iOS 5 i od razu zauważyłem, że nie mogę używać mojego iPhone'a 3G z iOS 4.2.1 do debugowania. Mogę debugować i testować tylko na moim iPhonie 4 z zainstalowanym iOS 5.

Na każdym z moich urządzeń z systemem iOS mniejszym niż 5.0 Xcode mówi tylko „Ukończono działanie dla iPhone3GS” i nie uruchamia go. Mam cel wdrożenia ustawiony na 3,0, ponieważ nie używam żadnych funkcji w mojej aplikacji powyżej 3,0 i chcę mieć możliwość kierowania na wszystkie wersje 3,0 lub nowsze. Mam zainstalowane i aktualne wszystkie moje profile obsługi administracyjnej.

Zakończyłem i ponownie uruchomiłem xcode, wielokrotnie czyściłem kompilację. Próbowałem dodać armv6 w ustawieniach kompilacji architektury, ale nic nie pozwoli mi zbudować i uruchomić mojej aplikacji na moim starym telefonie z iOS 4.2.1.

Moje pytanie brzmi: czy nadal jest możliwe, aby aplikacje z nowym SDK działały na iOS w wersjach starszych niż 5? Jak mogę się upewnić, że moja aplikacja będzie nadal działać na niższych wersjach iOS, jeśli nie mogę ich zainstalować na moim starym telefonie?

Edycja: OK, wygląda na to, że iOS SDK 5 domyślnie porzucił wsparcie dla armv6. To, co musisz zrobić, to dodać armv6 w polu Architektury w Ustawieniach kompilacji zarówno dla celu, jak i projektu. Wtedy Twoja aplikacja będzie mogła działać na urządzeniach iPhone 3G. Odpowiedź można znaleźć tutaj Jak budować dla architektur armv6 i armv7 z iOS 5

Greg Ellis
źródło
Zwróć uwagę, że twoja edycja ma związek z architekturami, co jest oddzielnym problemem dla iOSwersji. Dodaj również zmianę jako odpowiedź, aby zaakceptować znalezione rozwiązanie, a to pytanie można oznaczyć jako odpowiedź.

Odpowiedzi:

153

Miałem ten sam problem, próbując uzyskać nowo utworzony projekt Xcode 4.2 działający na telefonie iPhone 3G 4.2.1. Oto, jak udało mi się go uruchomić.

1) Zmień „Ustawienia kompilacji” ==> „Architektura” celu z „Standard (armv7)” na „Inne”. Dodaj armv6 i armv7.

2) Zmień „Ustawienia budowania” celu ==> „Prawidłowa architektura” na armv6 i armv7.

3) Zmień „Ustawienia kompilacji” celu ==> „Cel wdrożenia iOS” na iOS 4.2.

wprowadź opis obrazu tutaj

4) Otwórz projekty * -Info.plist, usuń ustawienie „Wymagane możliwości urządzenia” (pamiętaj, że wymaga armv7) wprowadź opis obrazu tutaj

btw odkryłem to, kiedy próbowałem ręcznie dodać aplikację przez organizatora i zgłosił:

Nie można zainstalować aplikacji

Info.plist dla aplikacji pod adresem /Users/.../TestsDebug.app określa wymagania dotyczące możliwości urządzenia, które nie są spełniane przez Dev iPhone 3G

Po tym wszystko powinno działać. Porozmawiaj o PITA.

mmorris
źródło
Dziękuję Ci bardzo! Jestem ci winien piwo! To rzeczywiście rozwiązało moje problemy, rzeczywiście PITA: D
Greg Ellis,
4
Dziękuję Ci! Czytałem o ustawieniach architektury gdzie indziej, ale nikt inny nie wspomina też o ustawieniach „Wymagane możliwości urządzenia”.
bunnyhero
Muszę dodać: aktualizacja dotyczy zarówno nowych, jak i starych projektów! Przetestowałem moje stare rzeczy przed googlowaniem i one też nie działały! Tobie też jestem winien piwo! :)
Eduardo Costa
1
Mam ten sam problem, ale nawet jeśli ustawienia projektu to „Standard armv7” dla architektur, Valid Architectures już wskazywały „armv6 armv7”. Ponadto nie miałem właściwości „Wymagane możliwości urządzenia” w Info.plist. Mimo to spróbuje tej sztuczki, mam nadzieję, że zadziała!
rchampourlier
„Wymagane możliwości urządzenia” też mnie dostały
kodekofeina
12

Przejdź do Xcode> Preferencje> Pobieranie i zainstaluj obsługę debugowania dla starszych wersji iOS.

Aleksejs Mjaliks
źródło
Poszedłem do preferencji i pobrałem i zainstalowałem obsługę debugowania dla starszych systemów operacyjnych, zamknąłem xcode, ponownie otworzyłem xcode wykonałem czyszczenie i kompilację, ale aplikacja nadal nie zainstaluje się na moim starszym urządzeniu. Jestem teraz totalnie zagubiony, ponieważ kiedy zobaczyłem twoją odpowiedź, pomyślałem na pewno, że to rozwiąże mój problem :(
Greg Ellis,
1
Tobie też jestem winien piwo! To rozwiązało KOLEJNY problem, który miałem po aktualizacji Xcode 4! Mogę teraz debugować moje urządzenie z systemem iOS 4.2 (iPod Touch 2. generacji)!
Eduardo Costa
3

mmorris zbliżył mnie do rozwiązania problemu ... W Info.plist musiałem ustawić Wymagane możliwości urządzenia na armv6, a nie armv7. Mam nadzieję, że pomoże to również innym.

flizit
źródło
1

Musisz podłączyć telefon, a następnie udać się do organizatora. Xcode powinien automatycznie zażądać starszej wersji.

Więcej informacji można znaleźć na stronie programisty. Zostało to opisane w uwagach do wersji 4.2 beta

Foo Bah
źródło
Zrobiłem to i kliknąłem „Użyj tego urządzenia do programowania” i wydawało się, że zrobiło to, co powinno, ale nadal nie mogę uruchomić aplikacji na moim starym urządzeniu z xcode.
Greg Ellis
1

Napotkałem podobny problem, próbując uruchomić aplikację na starym iPodzie Touch. Po uaktualnieniu do Xcode 4.3.3 aplikacja nie działałaby już w debugerze na starszym sprzęcie.

Uważam, że inne uwagi dotyczące „Architektury” i „Wymaganych możliwości urządzenia” są ważnymi szczegółami, które należy poprawnie określić. Niestety nie wystarczyły, aby rozwiązać mój problem.

W moim przypadku winowajcą był schemat kompilacji. Xcode 4.3.3 poprosił mnie o przełączenie się z debugera GDB na LLDB po uaktualnieniu mojego projektu. Kiedy zmieniłem akcję Uruchom mojego schematu z powrotem na GDB , mogłem ponownie uruchomić aplikację na moim starym sprzęcie z Xcode.

otto
źródło
1

Dowiedziałem się, że muszę dodać armv6 do architektur, ale nadal nie działało. A teraz usunąłem armv7 z wymaganych możliwości i to wszystko! Zadziałało!

Greg
źródło
0

To zadziałało dla mnie i powinno działać dla Ciebie, jeśli wcześniej miałeś starszą wersję Xcode. Jeśli nie, postępuj zgodnie z radami innych osób, aby uzyskać SDK ze starszej wersji SDK:

sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

To polecenie różni się tylko trochę od tego, które pokazują inne, ale te polecenia upuściły pliki w folderze SDK dla mnie - chcemy, aby jego podkatalog został utworzony z odpowiednią nazwą.

Tom Boutell
źródło
0

W moim przypadku w Wymaganych możliwościach urządzenia była nadmiarowa linia wprowadź opis obrazu tutaj

Właśnie to usunąłem ...

wprowadź opis obrazu tutaj

Mam nadzieję, że pomoże to komuś innemu.

Arkady
źródło