Co oznacza ostrzeżenie „Mapowanie architektury arm64 na x86_64”?


96

Po migracji mojego frameworka do Xcode 10 beta (10L176w) zacząłem otrzymywać ostrzeżenia, takie jak:

Mapowanie architektury arm64 do x86_64. Upewnij się, że ustawienia kompilacji architektury i prawidłowych architektur tego celu są poprawnie skonfigurowane dla platformy iOS Simulator.

... i:

Mapowanie architektury armv7 do i386. Upewnij się, że ustawienia kompilacji architektury i prawidłowych architektur tego celu są poprawnie skonfigurowane dla platformy iOS Simulator.

Pomimo tych ostrzeżeń, kompilacja i testy jednostkowe przebiegają pomyślnie. Używam Swift 4.2.

Ale o czym są te ostrzeżenia?


Widzę to podczas ustawiania, gdy próbuję zbudować tylko ARCHS = $(ARCHS_STANDARD_64_BIT)VALID_ARCHS = $(inherited) x86_64 i386
wersję

Odpowiedzi:


101

Przejdź do ustawień kompilacji i wykonaj poniższe czynności

wprowadź opis obrazu tutaj


5
Potwierdzam, że to zadziałało - nie wiem dlaczego, ale te ustawienia zostały pogrubione zarówno w ustawieniach projektu, jak i docelowej kompilacji. Następnie usunąłem, jak wspomniano powyżej (w obu miejscach!), A to właśnie usunęło pogrubione wyróżnienie (oczywiście przywrócone do wartości domyślnych), a ostrzeżenia zniknęły
Nick Entin

23
Aby wyjaśnić, należy to zrobić zarówno w odniesieniu do projektu, jak i celu.
palmi

2
Dobra odpowiedź, proponuję, żeby to było rozwiązanie.
Heider Sati

8
Po usunięciu nic nie pojawia się w Resolved i otrzymujęThere are no valid architectures to compile for because the VALID_ARCHS build setting is an empty list
Crystal

2
wydaje się już nie działać. Mam ten sam problem, który zgłasza Crystal z Xcode 11 beta 6. Zamiast tego działa dla mnie odpowiedź @ Johna
Fabian Streitel

70

Udało mi się wyciszyć te ostrzeżenia, zmieniając moje ustawienie Prawidłowe Architektury , na $(ARCHS_STANDARD)które pasuje również moje ustawienie Architektury .

Co dziwne, wyświetlało się to jako armv7 arm64(w porównaniu z ustawieniem domyślnym armv7 armv7s arm64), ale ręczne ustawienie tej wartości nadal powodowało ostrzeżenia. Nie jestem pewien, jakie to ma znaczenie, ale nie zauważyłem jeszcze żadnych problemów w moich testach.


2
To ustawienie zadziałało w przypadku „uniwersalnej” platformy przeznaczonej dla systemów iOS i macOS.
John

1
To było moje rozwiązanie. Ustawiłem prawidłowe architektury: $ (ARCHS_STANDARD) w Projekcie i Celach. Dzięki.
CGN

2
@CGN, jak ustawiłeś w Project? Ustawiłem pomyślnie dla celów.
Erum

@Erum: zobacz 2 zrzuty ekranu poniżej
CGN

27

Prawdopodobnie masz nadpisane ustawienie kompilacji VALID_ARCHS („Prawidłowe architektury”), albo dla celu, albo dla jego projektu. Jest to ustawienie kompilacji, które powinno automatycznie uzyskać swoją wartość na podstawie miejsca docelowego biegu, dla którego budujesz. Kiedy dowiesz się, skąd pochodzi to zastąpienie (ustawienie kompilacji będzie wyświetlane pogrubioną czcionką po zastąpieniu), wybierz je i naciśnij klawisz usuwania, aby przywrócić wartość domyślną.


2
Ja też widzę ten błąd. Nie nadpisałem ustawień VALID_ARCHS. Zawiera arm64zarówno do debugowania, jak i wydania.
funkenstrahlen

10
Wygląda na to, że jest to błąd w Xcode 10. Nadal występuje przy ustawieniach domyślnych
Kdawgwilk.

5
To, ale nadal wydaje się pojawiać w wydanej wersji Xcode 10. Czy ktoś ma jakieś aktualizacje na ten temat?
plivesey

1
me2, właśnie googlowałem o tym, ale bezskutecznie
MegaManX

2
Musiałem przejść do wszystkich moich podprojektów i celów i usunąć, VALID_ARCHSaby ustawić je na domyślne, a następnie wyczyścić i zamknąć / ponownie otworzyć Xcode, aby działał w pełni dla mnie
manman

17

Dla TARGET, który zgłasza ostrzeżenia, Zmień ustawienie „Prawidłowa architektura” na:

$(VALID_ARCHS)
x86_64

wprowadź opis obrazu tutaj


Najlepsza odpowiedź na pewno!
Supertecnoboff

8

Podobnie jak w przypadku innych odpowiedzi, udało mi się usunąć ostrzeżenie, zmieniając $(VALID_ARCHS)(Prawidłowe architektury) na $(ARCHS_STANDARD). Stamtąd wyczyściłem wszystkie pochodne dane i ponownie uruchomiłem Xcode 10.0. To spowodowało, że ostrzeżenie zniknęło całkowicie. Usunięcie wszystkiego z Valid Architectures spowodowało właśnie pojawienie się innego ostrzeżenia („Nie znaleziono prawidłowych architektur”).


1

Rozwiązanie jest prostsze: w Valid Architectures wystarczy zamienić arm64 na x86_64 .

Miałem podobny problem i następujące trzy ostrzeżenia w moim projekcie: Miałem podobny problem i następujące ostrzeżenie w moim projekcie

Pierwotnie były to moje ważne ArchtecturesMoje ** Valid Archtectures ** pierwotnie były

Wymiana:

  • armv7 z i386,
  • armv7s z i386,
  • i arm64 z x86_64

(jak wspomniano w Ostrzeżeniach) było moim rozwiązaniem. Wynik w ustawieniu Prawidłowa architektura był następujący:

Zastąpienie armv7 na i386, armv7s na i386, a arm64 na x86_64, jak wspomniano w ostrzeżeniach, było moim rozwiązaniem

Po wymianie moje trzy powyższe ostrzeżenia zniknęły.

Więcej szczegółowych informacji na temat architektur można znaleźć tutaj: https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/

Myślę, że sformułowanie tego ostrzeżenia w Xcode jest nieco zagmatwane.


1

Jeśli masz problem z Flutter:

  1. Usuń plik Podfile, Podfile.lock, folder Pods, Runner.xcworkspace, Flutter.framework.

  2. Biegnij flutter clean.

  3. Biegnij flutter build ios.

0

Widziałem to ostrzeżenie, kiedy próbowałem skompilować kod dla iOS i Mac OS. Udało mi się to obejść, robiąc najpierw to, co zasugerował Hassan Taleb w swojej odpowiedzi: wyczyść architektury tak, aby były tam tylko poprawne architektury iPhone'a. I wreszcie, aby zachować możliwość budowania dla systemu Mac OS, przesuń kursor myszy nad prawidłowe architektury, aby pojawił się przycisk plus. Kliknij to, a następnie w razie potrzeby możesz dodać oddzielne ustawienia dla różnych platform, w tym różnych architektur procesora. W przypadku zestawu SDK systemu macOS mogę ustawić poprawne architektury na x86_64, jeśli chcę.W przypadku zestawu SDK systemu macOS mogę ustawić poprawne architektury na x86_64, jeśli chcę


w obecnym Xcode ta opcja już nie istnieje.
JBarros35

@lambdapool której opcji nie widzisz? Czy jest to „Prawidłowe architektury” / „VALID_ARCHS”?
joelliusp

0

Najłatwiejszym sposobem rozwiązania tego problemu jest otwarcie projektu w edytorze tekstu, a następnie znalezienie i usunięcie wszystkich VALID_ARCHSwierszy.


0

Ja też mam ten sam problem. Aby rozwiązać problem, właśnie zmieniłem system kompilacji ze standardowego na starszy i to rozwiązało problem.


0

Widziałem to samo ostrzeżenie, kiedy budowałem moje ramy. Po pewnym czasie zauważyłem, że te prawidłowe wartości architektury różnią się w zależności od typu urządzeń, niezależnie od wartości w ustawieniach kompilacji.

Real devices-> arm64 
Simulator devices ->x86-64

-2

jeśli Twoje [Ustawienia kompilacji] to armv7 armv7s arm64, usuń armv7s. ostrzeżenie zostanie anulowane.


nie chodzi tylko o armv7, jest to ogólny problem, a twoja sugestia nie jest wybiegająca w przyszłość
amok
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.