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
Wyczyściłem wszystkie cele.
Doceniam wszelkie wskazówki.
Odpowiedzi:
Jeśli używasz Xcode 4.2 lub nowszego, spróbuj wykonać następujące czynności:
Kliknij nazwę projektu (w lewej kolumnie), a następnie cel:
Kliknij kartę „Ustawienia kompilacji” (w prawej kolumnie):
Kliknij wiersz „Zwolnij” lub „Dystrybucja” w obszarze „Architektury” i wybierz „Inne ...”:
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:
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.
źródło
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.
źródło
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.
Będzie to wyglądać tak:
źródło
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).
Usuń armv7 z „Wymaganych możliwości urządzenia” na liście ProjektNazwa-Info.plist
źródło
Aktualizacja iOS 6
Zmiany w Xcode 4.5.x dla iOS 6
źródło
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.
źródło
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
to moje ustawienie ekranu.
jeśli masz dołączony projekt, skonfiguruj wszystko. Mam nadzieję, że twoja pomoc.
źródło
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.
źródło
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
źródło
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
źródło
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.
źródło
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ć:
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) ....
źródło
Oto dokumentacja Apple:
Pytania techniczne QA1760
Mówi, że są dwie rzeczy, które musisz naprawić:
armv6
do ustawień kompilacji architekturyNo
.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.źródło
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.
źródło
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
źródło
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ę.
źródło
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).
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.
źródło