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
iOS
wersji. Dodaj również zmianę jako odpowiedź, aby zaakceptować znalezione rozwiązanie, a to pytanie można oznaczyć jako odpowiedź.Odpowiedzi:
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.
4) Otwórz projekty * -Info.plist, usuń ustawienie „Wymagane możliwości urządzenia” (pamiętaj, że wymaga armv7)
btw odkryłem to, kiedy próbowałem ręcznie dodać aplikację przez organizatora i zgłosił:
Po tym wszystko powinno działać. Porozmawiaj o PITA.
źródło
Przejdź do Xcode> Preferencje> Pobieranie i zainstaluj obsługę debugowania dla starszych wersji iOS.
źródło
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.
źródło
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
źródło
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.
źródło
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!
źródło
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ą.
źródło
W moim przypadku w Wymaganych możliwościach urządzenia była nadmiarowa linia
Właśnie to usunąłem ...
Mam nadzieję, że pomoże to komuś innemu.
źródło