Przesłanie aplikacji na iOS: brak obsługi 64-bitowej


91

Wysłałem wczoraj aplikację do recenzji, bez problemu. Potem zdałem sobie sprawę, że mam bardzo mało do zrobienia (zmiana maksymalnego poziomu powiększenia mapy z 19 na 18, nic więcej), więc usunąłem plik binarny z iTunes Connect i próbowałem przesłać ponownie.

Teraz mam to ostrzeżenie:

ostrzeżenie_xcode

Nie rozumiem dlaczego, ponieważ moje architektury to:

  • architektury: armv7
  • prawidłowe architektury: armv6, armv7, armv7s, arm64

Aplikacja działa dobrze w symulatorze. Jeśli spróbuję użyć standardowych architektur (armv7, arm64) zgodnie z zaleceniami w ostrzeżeniu, aplikacja nie zostanie zbudowana i otrzymam:

  • Niezdefiniowane symbole architektury x86_64
  • ld: nie znaleziono symboli dla architektury x86_64

Używam lib route-me i ustawiam te same ustawienia architektury.


My też mamy ten problem. :(
Nazik,

Także od wczoraj?
Tim Autin

1) spróbuj wyczyścić DerivedData for Xcode po zmianie tego; 2) Może używasz starszego zewnętrznego interfejsu API, SDK, frameworka itp.
TonyMkenu,

@Tim Czy udało ci się to naprawić? czy możesz opublikować rozwiązanie tego problemu?
user2056563

Witam, przepraszam, nie znalazłem rozwiązania i nie pracuję już nad tym projektem. Na razie to tylko ostrzeżenie, więc mogłem przesłać aplikację.
Tim Autin,

Odpowiedzi:


106

Użyj „ Standard architectures” w ten sposób:

  • Architektura: "Standardowe architektury" arm7 , arm64
  • Prawidłowe architektury: " arm64 ", armv7 ...
  • Buduj tylko aktywną architekturę - NIE (szczególnie ... jeśli podłączone urządzenie nie jest kompatybilne z arm64)

lubię to:

wprowadź opis obrazu tutaj

  • Dodatkowo, odłączanie iPhone'ów i iPadów od Maca jest znane jako pomocne, zwłaszcza jeśli są to wersje 32-bitowe.

2
Dziękuję za odpowiedź, ale jak napisałem w moim pytaniu, już próbowałem, a projekt nie kompiluje się z tymi ustawieniami: /
Tim Autin

3
@Tim, tak, ja też miałem armv7 and arm64w architekturze. Nadal pojawia się ostrzeżenie o braku obsługi 64-bitowej podczas sprawdzania poprawności aplikacji pod kątem przesłania.
Nazik,

@NAZIK czy masz arm64 w obu liniach (Architektury i Prawidłowe Architektury)? Miałem ten sam błąd i to było rozwiązanie
TonyMkenu

@Tim spróbuj wyczyścić swoje DerivedData i sprawdź najnowszą zewnętrzną platformę lub SDK, jeśli obsługują 64-bitowe
TonyMkenu,

3
Upewnij się również, że urządzenie NIE jest podłączone podczas archiwizowania ostatecznej wersji. Zobacz odpowiedź @powertoold poniżej ( stackoverflow.com/a/26848865/1715004 )
Filipe Borges,

68

Po potwierdzeniu poprawności architektur upewnij się, że urządzenie NIE jest podłączone do komputera podczas ARCHIWIZACJI ostatecznej wersji do przesłania do App Store.

Powodem pojawienia się tego ostrzeżenia jest to, że podłączone URZĄDZENIE prawdopodobnie nie jest zgodne z arm64.


4
Czapki z głów! : D Zaoszczędziłeś mi czas
Vaibhav Limbani,

1
Wielka pomoc !! Zaoszczędziło mi to dużo czasu. Dobra wskazówka dotycząca uaktualniania starych aplikacji.
harry

Uważam, że możesz zachować podłączone urządzenia inne niż 64-bitowe, jeśli zmienisz ustawienie kompilacji Build Active Architecture Onlyna No. Zmusi to xcode do zbudowania 64-bitowego pliku binarnego niezależnie od podłączonego urządzenia.
jxmallett

3
Oprócz odpowiedzi @jxmallett upewnij się, że archiwum konfiguracji schematu jest ustawione na Wersja, w której Build Active Architectureustawiono No. Ustaw program archiwizacji
KarenAnne

1
FYI musiałem odłączyć urządzenie, przełączyć się na symulator, a następnie przełączyć się z powrotem na „Urządzenie iOS”, aby to zadziałało.
nwkeeley

37

Jak napisał Tony, ważne jest, aby mieć w obu liniach te ustawienia. Ponieważ mój (i oczywiście twój) projekt został utworzony jeszcze przed dodaniem arm64 do standardu, nie jest on odzwierciedlony w „Prawidłowych architekturach”, nawet jeśli jest wyświetlany jako Standard.

Co ja zrobiłem:

  • Poszedłem do konfiguracji Project (vs. Target)
  • Wpisane „arm64” w obowiązującym architektur (nie jest to automatycznie odzwierciedlone w celach i schematów

Po wyczyszczeniu / kompilacji otrzymuję nawet ostrzeżenia o niewłaściwej konwersji float na CGFloat itp., Więc ustawienia oczywiście zostały zastosowane.

Ostrzeżenie dotyczące weryfikacji również zniknęło!

wprowadź opis obrazu tutaj


1
> nie odzwierciedlone w „Valid Architectures”, nawet jeśli jest pokazane jako Standard. To był dla mnie punkt. Dzięki!
Romain

1
Jeśli to pomaga innym, musiałem zmienić zarówno Projekt, jak i Cel, aby dostać się do pracy
djburdick

@djburdick Thanks. To działało na mnie, gdy nic innego nie działało.
Dave Chambers

27

Odłącz urządzenie fizyczne od komputera Mac. W XCode na liście urządzeń wybierz Urządzenie iOS i ponownie utwórz archiwum. U mnie to zadziałało.


5

Dzisiaj rozwiązuję ten problem, wykonując następujące czynności:

Ustawienia budynku:

Architektury: Standardowe architektury (arm7, arm64) - $ (ARCH_STANDARD)

Prawidłowe architektury: armv7 armv7s arm64

  1. Wyczyść i utwórz swoją aplikację z podłączonym iPhonem
  2. Odłącz iPhone'a i sprawdź, czy na górnym pasku znajduje się „Urządzenie iOS”
  3. Archiwum
  4. Sprawdź i prześlij

@ Timuçin. Przepraszam za moją spóźnioną odpowiedź, masz rację: armv7 armv7s arm64.
Leonel Folmer


2

Okej, to było szalone. Próbowałem każdej odpowiedzi. Ale zadziałało tylko wtedy, gdy umieściłem arm64przed armv7i armv7sw Valid Architectures.

PS: xcode version : 7.2


1
Tak. dopiero wtedy i dopiero po podłączeniu urządzenia pokazywał się rzeczywisty dziennik błędów. Następnie pojawiły się niektóre linie kodu, które są przestarzałe i wymagane (czerwone) poprawki oraz niektóre problemy z biblioteką RSA.
maxweber

1

Rozwiązałem problem, zmieniając,

Architektury: arm7, arm64

Prawidłowa architektura: arm7, arm64

Buduj tylko aktywną architekturę: Tak


1

Przesłałem sukces przez config jako obraz: wprowadź opis obrazu tutaj

(Zarchiwizowano na prawdziwym urządzeniu)


1
Powinien ustawić tryb zwolnienia na no
ZYiOS

1

Pozbyłem się każdego ostrzeżenia. Przeszukiwał wszystko w kółko. Znalazłem odpowiedź na jedno słowo powyżej.

„Build Active Architecture Only - NO (szczególnie ... jeśli podłączone urządzenie nie jest zgodne z arm64)”

Mój iPad nie jest 64-bitowy. Wpisz NIE dla budowania aktywnej architektury i moje zgłoszenie zadziałało


0

Zmień cel rozwoju systemu iOS na co najmniej 5.1.1 lub alternatywnie usuń ustawienie architektur standardowych i zastosuj je ponownie. Mogłeś zobaczyć ostrzeżenie, że arm64 nie jest kompatybilny z twoim celem kompilacji. Na stronie przeglądu sprawdź zarówno ustawienia kompilacji, jak i celu „celu wdrożenia”. W moim przypadku celem było 6.0, ale projekt to 5.0.

Sprawdź także „Prawidłowe architektury” zarówno w celu, jak i w projekcie. Miałem odpowiednie ustawienia w projekcie, ale nie na celu. Potem zadziałało dla mnie.

Przełączaj się między projektem / celem na stronie przeglądu w lewym górnym rogu pola.


Naprawdę masz na myśli 5.1.1? 5.1 to za mało?
Dirk

To był długi czas. Nie znam ani nie pamiętam logiki tego. Po prostu wykonaj kroki, a coś może wrócić na swoje miejsce. Baw się architekturą i wszystkimi wymienionymi stronami.
user1122069

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.