w pliku wykonywalnym aplikacji brakuje wymaganej architektury armv6

81

Używam xCode 4.2 i próbuję wdrożyć moją aplikację. Weryfikacja kończy się niepowodzeniem i pojawia się następujący komunikat o błędzie:

application executable is missing a required architecture armv6

Wartość moich architektur jest ustawiona na Standard (armv7). To JEDYNA opcja na liście rozwijanej. Podstawowe SDK: iOS 5.0 (jest to jedyna opcja) Deployment SDK: 3.2 Buduj tylko aktywną architekturę: NIE Prawidłowe architektury: armv6 armv7 armv7f armv7k

Czy ktoś zna rozwiązanie tego problemu?

azamsharp
źródło
W rzeczywistości zduplikowane pytanie ma inne rozwiązanie, które polega na powrocie do starej wersji xCode. Zastanawiałem się, czy jest jakiś sposób na rozwiązanie tego problemu w obecnej wersji.
azamsharp
Okazuje się, że jedynym rozwiązaniem jest odinstalowanie xCode 4.2 i zainstalowanie xCode 4.1
Azamsharp
1
Ponieważ iOS 5.0 i Xcode 4.2 to oprogramowanie w wersji beta, nadal objęte są umową NDA. Najlepszym rozwiązaniem jest omówienie ich na forach programistów Apple: devforums.apple.com . Jeśli napotkasz błąd w narzędziach, pamiętaj o przesłaniu raportu na bugreport.apple.com .
Brad Larson

Odpowiedzi:

83

W Xcode 4.2 GM jest to nadal problem, ale możesz go rozwiązać, wykonując następujące czynności.

  1. Przełącz się do widoku plików / folderów w projekcie Xcode

  2. Wybierz swój projekt (niebieska ikona)

  3. Wybierz swoją aplikację w obszarze Cele na środku ekranu.

  4. Przejdź do ustawień kompilacji

  5. Znajdź Architektury> Dystrybucja

  6. Rozwiń tę sekcję, aby zobaczyć zarówno debugowanie, jak i wydanie

  7. Zmień „Standard (armv7) - $ (ARCH_STANDARD_32_BIT)” na „Inne ...”

  8. Zamień „Standard (armv7) - $ (ARCH_STANDARD_32_BIT)” na „armv6”, a następnie dodaj nowy element „armv7”

Pamiętaj, że może być konieczne zrobienie tego dla wszystkich dołączonych projektów, takich jak frameworki, takie jak TAPKU

wprowadź opis obrazu tutaj

J3RM
źródło
Naprawdę nie rozumiem kroku 8 ... Czy mógłbyś to rozwinąć?
Samuel
4
Jeśli wybierzesz INNE z listy rozwijanej, otrzymasz pole z siatkami, możesz dodać armv6 w jednej linii i armv7 w następnej linii. Dodany zrzut ekranu jest nieprawidłowy.
J3RM
To mnie uratowało. Wielkie dzięki !
fyasar
1
Upewnij się, że „Budowanie Aktywny Architecture Only” jest ustawiony na „NIE” W przeciwnym razie, jeśli jest podłączony do urządzenia będzie budować tylko na tym urządzeniu ...
user739711
46

W przypadku Xcode 4,5 ustaw cel wdrożenia na co najmniej iOS 4.3 i to rozwiąże problem. armv6 i wcześniejsze wersje iOS prawie wymarły.

SK9
źródło
2
Bardzo dziękuję za to, kosztowało mnie to już 2 godziny bólu głowy!
RickJansen,
2
tak, ustawienie celu na iOS 4.3 rozwiązuje problem również w najnowszym 4.5.1 ... dzięki
Jim Jose
40

Łatwy sposób na zrobienie tego:

1) Kliknij lewym przyciskiem myszy ikonę projektu ( niebieska ikona pod przyciskiem „Uruchom”).

2) Obok ikony projektu (po jej prawej stronie) kliknij lewym przyciskiem myszy nazwę projektu pod „PROJEKT” (białe tło).

3) Wybierz zakładkę „Ustawienia budowania” i poszukaj podmenu „Architektury” (pierwsze). Kliknij lewym przyciskiem myszy „Standard (armv7) $ (ARCH_STANDARD_32_BIT)” i wybierz „Inne ...”

4) Kliknij ikonę „-”, aby usunąć oryginalną wartość ( „$ (ARCH_STANDARD_32_BIT)” ). Kliknij ikonę „+” i wpisz „armv6” (bez podwójnych cudzysłowów). Kliknij ponownie ikonę „+” i dodaj „armv7” (również bez cudzysłowów). Kliknij „Gotowe” .

5) Upewnij się, że „Build Active Architecture Only” jest ustawione na „No” (powinno być)

6) Obok ikony projektu (po jej prawej stronie) kliknij lewym przyciskiem myszy nazwę projektu w sekcji „CELE” i powtórz kroki 3, 4 i 5.

7) Naciśnij cmd + I na klawiaturze (lub Produkt -> Profil w menu Xcode) i sprawdź, czy wszystko jest w porządku.

bdurao
źródło
3
Uważam, że te instrukcje są bardziej zrozumiałe, ale nie zapomnij o tej ważnej uwadze z @ J3RM: „Pamiętaj, że być może trzeba będzie to zrobić dla wszystkich uwzględnionych projektów, takich jak frameworki, takie jak TAPKU”
benvolioT
moje ustawienia były takie, że „Build Active Architecture Only” było ustawione na true - dzięki za rozwiązanie!
Chris Brandt,
W kroku 4 wspomniałeś o kliknięciu Gotowe. Ale nie widzę żadnego przycisku DOne. :/ Czy coś mi umyka?
rohan-patel
5

Moje środowisko to Xcode 4.5.1. Zmiana dwóch rzeczy rozwiązała ten problem.

  1. Ustawienie celu wdrożenia na co najmniej iOS 4.3.
  2. Utrzymywanie tylko architektury armv7 na liście architektur w ustawieniach kompilacji i jawne usuwanie wszystkich innych (w tym armv6).
Rajaraman
źródło
Tak, ja też. Moja aplikacja tylko na iPada odmówiła zbudowania, dopóki nie usunąłem armv7s z listy architektur.
Mike Gledhill,
4

Na to pytanie natrafiam, szukając odpowiedzi na ostrzeżenie:

warning: iPad: application executable is missing a required architecture.
At least one of the following architecture(s) must be present: armv7 (-19033)
Unable to validate your application. - (null)

Inne odpowiedzi nie rozwiązały mojego problemu, a potem zdałem sobie sprawę, że zmieniłem wartość CFBundleExecutable. Kiedy wróciłem do starej wartości, wszystko znów poszło gładko.

Nie jestem pewien, co jest bezpośrednią przyczyną tego ostrzeżenia, ale przynajmniej mogę ponownie rozpowszechniać kompilacje ad hoc.

Piotr Byzia
źródło
Naprawdę dziwne, dostałem to samo ostrzeżenie i kilka niepowiązanych. Zmieniono wartość z CFBundleExecutablepowrotem na to, co było i wszystko poszło dobrze. Podziękować!
Adriano Lucas
3

Wszystkie odpowiedzi nie pomogły w moim przypadku, używając Xcode 4.2.1.

To, co zrobiłem, zmieniło się Architecturesz armv7na armv6 armv7i zadziałało. Lubię to:

wprowadź opis obrazu tutaj

samwize
źródło
3

Dodanie armv6 było tylko częściowo problemem dla mnie, aby rozwiązać ten sam problem z Xcode 4.5. Musiałem również zwiększyć cel wdrożenia z iOS 4.1 do iOS 5.0, aby działał. Wiele godzin frustracji na takie proste rozwiązanie. Mam nadzieję, że to pomoże.

user1712742
źródło
5
Wystarczy zwiększyć cel do 4,3.
SK9
-1

Pomogło mi to, gdy ustawiłem się tylko armv6pod architekturami

Dario Caric
źródło