„Ostrzeżenie: aplikacje na iPhone'a powinny zawierać architekturę armv6”, nawet z zestawem konfiguracji kompilacji

332

Minęło trochę czasu, odkąd musiałem dostosować ustawienia kompilacji projektu. Po aktualizacji do najnowszego pakietu SDK mam problemy z budowaniem konfiguracji dystrybucji ad hoc.

Kompilacja generuje to ostrzeżenie i błąd:

ostrzeżenie: aplikacje na iPhone'a powinny zawierać architekturę armv6 (obecny ARCHS = „armv7”)

iPhone / iPod Touch: plik wykonywalny aplikacji nie ma wymaganej architektury. Musi istnieć co najmniej jedna z następujących architektury: armv6 (-19033)

Jednak w moim projekcie myślałem, że mam poprawnie ustawione rzeczy:

  • Architektury to: Standard (armv6 armv7)
  • Podstawowy zestaw SDK: najnowszy iOS (obecnie ustawiony na iOS 4.2)
  • Prawidłowe architektury: armv6 armv7

alternatywny tekst

Wyczyściłem wszystkie cele.

Doceniam wszelkie wskazówki.

Nacięcie
źródło
Moja była starą aplikacją, która otrzymała aktualizację, i wyświetla ten sam błąd dla docelowego poziomu wdrożenia iOS <4.3! Więc moim rozwiązaniem było usunięcie wszystkich odniesień do armv6 i ustawienie tego na> = 4.3. Zadziałało.
Henrik Erlandsson
I właśnie teraz wypróbowałem to samo dla innej starej aplikacji, która została zmieniona i nie działała ... Problem z XCode 5, wygląda na to, że źle odczytuje ustawienia kompilacji.
Henrik Erlandsson

Odpowiedzi:

418

Jeśli używasz Xcode 4.2 lub nowszego, spróbuj wykonać następujące czynności:

  1. Kliknij nazwę projektu (w lewej kolumnie), a następnie cel:

    wprowadź opis zdjęcia tutaj

  2. Kliknij kartę „Ustawienia kompilacji” (w prawej kolumnie):

    wprowadź opis zdjęcia tutaj

  3. Kliknij wiersz „Zwolnij” lub „Dystrybucja” w obszarze „Architektury” i wybierz „Inne ...”:

    wprowadź opis zdjęcia tutaj

  4. Kliknij dwukrotnie podświetlony wiersz o nazwie „$ (ARCHS_STANDARD_32_BIT)” w wyświetlonym oknie popover i zastąp go, wpisując „armv6”. Następnie dodaj nowy wiersz z przyciskiem plus w lewym dolnym rogu okna popover i wpisz „armv7”, a następnie kliknij przycisk Gotowe:

    wprowadź opis zdjęcia tutaj

Aktualizacja: powinieneś dodać armv7s, aby celować również w iPhone'a 5. (I upuść armv6, jeśli budujesz z Xcode 4.5 lub nowszym, który nie obsługuje już armv6.)

Otóż ​​to. Powinieneś być teraz w stanie budować / archiwizować bez generowania błędów.

Jeśli nadal nie działa, zapoznaj się z odpowiedzią justinxreese , która sugeruje dodanie wpisów dla armv6 i armv7 w sekcji „Wymagane możliwości urządzenia” w pliku info.plist.

Nacięcie
źródło
3
Tak, wygląda na to, że Apple odchodzi od ARM6, więc wydaje się to niezbędnym krokiem dla Xcode 4.2. Dziwne, że proces przesyłania nadal wymaga kompilacji ARM6, mimo że wersja 4.2 jest teraz publiczna ...
Jasarien
7
Nie mam wiersza dystrybucji w architekturze, zamiast tego mam wiersz „Release”. nie wiem jak to zrobić
OMGPOP
2
@ Let'sSpotIt Wystarczy dodać armv6 i armv7 do wiersza wydania. Projekt z moich zrzutów ekranu został zaimportowany z wcześniejszej wersji Xcode, stąd różne nazwy architektury.
Nick
2
Dzięki Nick. Ponadto nowe projekty utworzone w Xcode 4.2 mogą wymagać zmiany pliku info.plist w celu obsługi urządzeń armv6. Zobacz moją dodatkową odpowiedź poniżej.
MattyG
1
@ Dziękuję za podpowiedź, a dla mnie musiałem wybrać „Projekt” zamiast „Cel”. wybranie z ustawień kompilacji „Cel” nie działało dla mnie. w każdym razie jeszcze raz dziękuję za pomoc.
Prasad De Zoysa
62

Jeśli odznaczysz opcję „Buduj tylko aktywną architekturę”, spowoduje to zbudowanie wszystkich prawidłowych architektur.

Aktualizacja : Nie dotyczy już Xcode 4 - postępuj zgodnie z instrukcjami Nicka dla Xcode 4 i późniejszych.

Brian
źródło
11
Możesz przyspieszyć czas kompilacji, ustawiając YES dla kompilacji debugowania i No w kompilacjach wersji.
Billy Gray,
59

Miałem ten problem, nawet po wykonaniu zaakceptowanej odpowiedzi i znalazłem następujące do pracy:

W swoim Info.plist dodaj wpis Wymagane możliwości urządzenia. Powinien to być tablica i zawierać dwa wpisy.

  • Pozycja 0: armv6
  • Pozycja 1: armv7

Będzie to wyglądać tak:

Wymagany wpis możliwości urządzenia

justinxreese
źródło
To rozwiązanie naprawiło moje inne ostrzeżenia dotyczące architektury, ale nadal otrzymuję pierwsze, a także mam opcję „Buduj tylko architekturę aktywną” ustawioną na „Nie”
Dan F
naprawiłem to, ponieważ poprzednie rozwiązanie nie miało zastosowania. Z jakiegoś powodu armv6 nie wyświetla się już w ustawieniach mojej architektury kompilacji: S
patrz
To wraz z powyższą odpowiedzią Nicka to dla mnie naprawiło. +1
Saurabh Wadhwa
Powinieneś w ogóle usunąć tę opcję w najnowszych wersjach xCode, a następnie się skompiluje. Jeśli umieścisz oba, będzie to wymagało, aby obie arkityki były ważne w twoim urządzeniu, co jest praktycznie niemożliwe
Artem
Aby budować z XCode 4.5+, będziesz musiał usunąć armv6 z wymaganych możliwości urządzenia.
Pulkit Goyal
26

Oprócz odpowiedzi Nicka na temat Xcode 4.2 może być także konieczne przejrzenie pliku info.plist. Wygląda na to, że nowe projekty rozpoczęte w Xcode 4.2 domyślnie określają „armv7” w „Wymaganych możliwościach urządzenia”. Musisz to usunąć, jeśli chcesz obsługiwać urządzenia z systemem Armv6 (np. IPhone 3G).

wprowadź opis zdjęcia tutaj

Usuń armv7 z „Wymaganych możliwości urządzenia” na liście ProjektNazwa-Info.plist

MattyG
źródło
21

Aktualizacja iOS 6

Zmiany w Xcode 4.5.x dla iOS 6

  1. Xcode 4.5.x (i nowsze wersje) nie obsługuje generowania plików binarnych armv6.
  2. Teraz obejmuje obsługę iPhone'a 5 / armv7.
  3. Minimalny obsługiwany cel wdrażania w Xcode 4.5.x lub nowszy to iOS 4.3.
Animesh
źródło
6

Też miałem ten problem. Właśnie ustawiłem cel wdrożenia na 4.3 i pozostawiłem tylko architekturę armv7 i zadziałało. W momencie prawie każdy ma 5, więc 4.3 jest w porządku.

Tom Kincaid
źródło
3

dla mnie nie działa z każdą odpowiedzią. ale próbuję CELE> Architektury> Debuguj i dodaję nowy wiersz za pomocą przycisku plus i wpisz „armv6” (bez out), a następnie kliknij Gotowe.

i na koniec CMD + B, a następnie kliknij prawym przyciskiem myszy na PrjectName.app (w folderze Produkty)> Otwórz w Finderze> Kompresuj „PROJECT_NAME.APP” (w Debug-iphoneos)> Prześlij do AppStore

wprowadź opis zdjęcia tutaj

to moje ustawienie ekranu. wprowadź opis zdjęcia tutaj

jeśli masz dołączony projekt, skonfiguruj wszystko. Mam nadzieję, że twoja pomoc.

mr.octobor
źródło
1
Dodatkowo musiałem ustawić armv6 w architekturze wydania, zanim zadziała.
mph
3

Po wypróbowaniu mieszanki tych odpowiedzi w końcu natknąłem się na to, by to zadziałało. Jestem teraz wkurzony na Apple. Po kolejnej godzinie zmarnowali mnie. Oto moja konfiguracja.

wprowadź opis zdjęcia tutaj

Louie
źródło
2

Wypróbowałem wszystkie powyższe odpowiedzi, żadne nie rozwiązało mojego pytania. Więc tworzę nowy projekt i zmieniam ustawienia kompilacji jeden po drugim. Tylko „Alternatywne pliki uprawnień” są inne. Kompilacja projektu zakończona niepowodzeniem ma wartość armv7. Usuń go, a następnie wyczyść-> kompilacja-> archiwum. Osiągnąć sukces! Nadzieja może rozwiązać twoje pytanie

mbo
źródło
2

Wow, aktualizuję / przesyłam aplikacje co około 6 miesięcy. Za każdym razem, gdy to robię, muszę nauczyć się „nowego” sposobu, aby to zrobić ...

Te same problemy, które opisano powyżej podczas uruchamiania systemu iOS 5.1 i Xcode 4.3.2

Dzięki za posty! Spędziłem trochę czasu aktualizując wszystkie ustawienia projektu do armv6, armv7, ale nie ma radości. Po ustawieniu opcji „buduj tylko aktywną architekturę” na Nie, wystąpił błąd kompilacji dotyczący umieszczenia obu obiektów w tym samym katalogu.

Na szczęście zauważyłem, że zamiast tego modyfikowaliście docelowe ustawienia kompilacji. To w końcu zadziałało (armv6, armv7 i ustawienie „buduj aktywną architekturę” na Nie w Ustawieniach kompilacji docelowej). Jako wyłączenie odpowiedzialności ustawiłem już wszystkie architektury na armv6, armv7 w ustawieniach projektu.

W każdym razie dzięki za pomoc, Brent

Brent
źródło
2

Musiałem koniecznie zmienić te ustawienia zarówno w ustawieniach Target, jak i Project na xCode 4.3.2 po zrobieniu tego i ustawieniu go do budowania zarówno dla armv6, jak i armv7 wszędzie, gdzie mogłem przesłać moją aplikację.

Dla bezpiecznego pomiaru opuściłem również xCode między wprowadzeniem zmian a wykonaniem czystego, kompilacyjnego, archiwalnego cyklu.

pwbrewer
źródło
0

Dla mnie też dość bolesny problem. Spędziłem około godziny, próbując budować i odbudowywać - bez radości. W końcu musiałem to zrobić:

  1. Zaktualizuj podstawowy zestaw SDK do najnowszego (w moim przypadku iOS 5)
  2. Uruchom ponownie xCode
  3. Clean & Build
  4. Zadziałało!

Myślę, że to garść żargonu na temat arm6, arm7, ponieważ wyglądało to tak, jakby mój projekt był ważny dla obu, przynajmniej ustawienia zdawały się tak twierdzić), domyślam się, że jest to cyniczny sposób na oszołomienie nas szczegółami technicznymi, które nie damy nie rozumiem, więc wybieramy łatwą opcję i celujemy w najnowsze iOS (dobre dla Apple z większą liczbą osób na bieżąco) ....

dijipiji
źródło
0

Oto dokumentacja Apple:

Pytania techniczne QA1760

Mówi, że są dwie rzeczy, które musisz naprawić:

  1. Dodaj armv6do ustawień kompilacji architektury
  2. Ustaw opcję Buduj aktywną architekturę tylko na No.

Jeśli to ci nadal nie pomoże, sprawdź dokładnie, czy naprawdę zmieniasz ustawienia kompilacji architektury dla właściwej konfiguracji kompilacji - zmarnowałem pół godziny na majstrowanie przy niewłaściwym i zastanawiam się, dlaczego to nie zadziałało ...

Wybierz Edit Scheme...w menu Produkt, kliknij schemat „Archiwum” na lewej liście i sprawdź konfigurację kompilacji. Zmień wartość, jeśli nie była zgodna z oczekiwaniami.

Rolf Staflin
źródło
0

Uwaga; Musiałem wykonać te kroki zarówno dla mojego podstawowego projektu, jak i dla osadzonego pliku PhoneGap .xcodeproj w mojej aplikacji.

Tak, osadzam PhoneGap; aktualizują się zbyt często, a ja mam mniej niż dwa miesiące, aby wiedzieć, że funkcja jest przestarzała.

James Perih
źródło
0

Spróbuj zmienić cel wdrażania na coś wyższego niż procesor armv6. Ustawienia xCode odnoszą się do poziomu systemu operacyjnego, na przykład: iOS wersja # {3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) Możesz to ustawić w zakładce ustawień kompilacji lub zakładce podsumowania. Rozpocznij w lewym górnym rogu okna w Nawigatorze projektu, ze wszystkimi wymienionymi w nim plikami. Kliknij najwyższą z nich, która ma niebieską ikonę.

(ii) Jeśli planujesz korzystać z programowalnych obwodów liniowych modułu cieniującego, do których dostęp i sterowanie odbywa się za pośrednictwem interfejsu API OpenGL ES 2.0, powinieneś ustawić swoją „wersję wdrażania” na około 4.3, która moim zdaniem jest dostępna tylko na urządzeniach takich jak 3GS lub nowszy. xCode zgłasza, że ​​potrzebny jest iOS 4.2.5 lub wyższy, uruchom kod armv7. I jeszcze raz, jak sądzę, ten procesor zaczął od 3GS. * IOS 4.3 wydaje mi się na razie wyborem.

http://theiphonewiki.com/wiki/index.php?title=Armv7

http://en.wikipedia.org/wiki/List_of_iOS_devices

Marc Clint Dion
źródło
0

Jeśli xCode wciąż narzeka na armv7, upewnij się, że odłączyłeś jakiekolwiek podłączone urządzenie (zwłaszcza iPhone 5 !!) i spróbuj ponownie. Zajęło mi godziny, aby znaleźć tę małą informację.

refaelio
źródło
0

Korzystając z Xcode 4.2 na Snow Leopard, użyłem następujących ustawień, aby zbudować aplikację, która działała zarówno na armv6 (Iphone 3G i niższe) ORAZ armv7 (wszystko nowsze niż 3G, w tym 3GS).

architektury: armv6 i armv7 (usunięte $ (ARCHS_STANDARD_32_BIT))
budują tylko aktywną architekturę: brak
wymaganych możliwości urządzenia: armv6

nie włączaj armv7 w wymagane funkcje urządzenia, jeśli chcesz, aby aplikacja działała również w 3G i niższych wersjach.

noromamai
źródło
1
to jedyna rzecz, która działała dla mnie. testowanie na iphone4, iphone3g, ipad1, ipad2. przeczytałem, że musiałem umieścić armv6 ORAZ armv7 w wymaganych możliwościach urządzenia, ale jak tylko wprowadzę armv7, aplikacja nie będzie ładować / uruchamiać się na iphone3g
noromamai
Pozostawienie wpisu armv7 w „Wymaganych możliwościach urządzenia” spowodowało, że Xcode zabronił mi uruchamiania na telefonie iPhone 3G.
tinsukE