Cảnh báo “Ánh xạ kiến ​​trúc arm64 tới x86_64” có nghĩa là gì?


95

Sau khi chuyển khung công tác của mình sang Xcode 10 beta (10L176w), tôi bắt đầu nhận được các cảnh báo như:

Ánh xạ kiến ​​trúc arm64 sang x86_64. Đảm bảo rằng cài đặt xây dựng Kiến trúc và Kiến trúc hợp lệ của mục tiêu này được định cấu hình chính xác cho nền tảng Trình mô phỏng iOS.

... và:

Ánh xạ kiến ​​trúc armv7 tới i386. Đảm bảo rằng cài đặt xây dựng Kiến trúc và Kiến trúc hợp lệ của mục tiêu này được định cấu hình chính xác cho nền tảng Trình mô phỏng iOS.

Bất chấp những cảnh báo này, bản dựng và bài kiểm tra đơn vị đều đạt Ok. Tôi đang sử dụng Swift 4.2.

Tuy nhiên, những cảnh báo này là gì?


Tôi thấy điều này khi thiết khi cố gắng xây dựng 64 bit chỉ sử dụng ARCHS = $(ARCHS_STANDARD_64_BIT)VALID_ARCHS = $(inherited) x86_64 i386
Kdawgwilk

Câu trả lời:


101

Vào Cài đặt bản dựng và làm như hình dưới đây

nhập mô tả hình ảnh ở đây


5
Tôi xác nhận, điều này có hiệu quả với tôi - tôi không biết tại sao, nhưng những cài đặt đó đã được tô đậm cả trên cài đặt xây dựng dự án và mục tiêu. Sau đó, tôi đã xóa như đã đề cập ở trên (ở cả hai nơi!) Và điều này chỉ xóa phần đánh dấu in đậm (hiển nhiên được hoàn nguyên về mặc định) và các cảnh báo đã biến mất
Nick Entin

23
Chỉ cần làm rõ, điều này phải được thực hiện trên cả dự án và mục tiêu.
palmi

2
Câu trả lời tuyệt vời, tôi đề xuất đây là giải pháp.
Heider Sati

8
Khi tôi xóa nó, không có gì hiển thị trong Đã giải quyết và tôi nhận đượcThere are no valid architectures to compile for because the VALID_ARCHS build setting is an empty list
Crystal

2
dường như không còn hoạt động nữa. Tôi nhận được cùng một vấn đề Crystal báo cáo với Xcode 11 beta 6. @ câu trả lời của John làm việc cho tôi thay vì
Fabian Streitel

70

Tôi đã có thể tắt tiếng những cảnh báo này bằng cách thay đổi cài đặt Kiến trúc hợp lệ của mình thành cài đặt $(ARCHS_STANDARD)này cũng phù hợp với cài đặt Kiến trúc của tôi .

Thật kỳ lạ, điều này hiển thị dưới dạng armv7 arm64(so với cài đặt mặc định của armv7 armv7s arm64), nhưng việc đặt nó thành giá trị đó theo cách thủ công vẫn gây ra cảnh báo. Không chắc ý nghĩa của điều đó là gì, nhưng tôi chưa nhận thấy bất kỳ vấn đề nào trong thử nghiệm của mình.


2
Cài đặt này phù hợp với tôi đối với khuôn khổ "phổ quát" nhắm mục tiêu cả iOS và macOS.
John

1
Đó là giải pháp của tôi. Tôi đặt các kiến ​​trúc hợp lệ: $ (ARCHS_STANDARD) trong Dự án và trong Mục tiêu. Cảm ơn.
CGN

2
@CGN bạn đã thiết lập như thế nào trong Project? tôi đã đặt thành công cho Mục tiêu.
Erum

@Erum: xem 2 ảnh chụp màn hình bên dưới
CGN

27

Bạn có thể có cài đặt bản dựng VALID_ARCHS ("Kiến trúc hợp lệ") bị ghi đè, cho mục tiêu hoặc cho dự án của nó. Đây là cài đặt xây dựng sẽ tự động nhận giá trị của nó dựa trên đích chạy mà bạn đang xây dựng. Khi bạn tìm ra nguồn gốc của ghi đè này (cài đặt bản dựng sẽ hiển thị in đậm khi bị ghi đè), hãy chọn nó và nhấn phím xóa để khôi phục nó về giá trị mặc định.


2
Tôi cũng thấy lỗi này. Tôi đã không ghi đè cài đặt VALID_ARCHS. Nó chứa arm64cho cả gỡ lỗi và phát hành.
funkenstrahlen

10
Đây dường như là một lỗi trong Xcode 10. Tuy nhiên xảy ra với các thiết lập mặc định
Kdawgwilk

5
Điều này nhưng dường như vẫn xuất hiện với phiên bản phát hành của Xcode 10. Có ai có bất kỳ cập nhật nào về điều này không?
plivesey 17/09/18

1
Me2, tôi đã chỉ googling về vấn đề này, nhưng không có kết quả
MegaManX

2
Tôi cần thiết để đi đến tất cả các dự án phụ của tôi và các mục tiêu và xóa VALID_ARCHSđể thiết lập nó để mặc định và sau đó làm sạch và đóng / mở Xcode một lần nữa cho nó để làm việc đầy đủ đối với tôi
manman

16

Đối với TARGET mà báo cáo cảnh báo, hãy thay đổi cài đặt "Kiến trúc hợp lệ" thành:

$(VALID_ARCHS)
x86_64

nhập mô tả hình ảnh ở đây


Câu trả lời tốt nhất chắc chắn!
Supertecnoboff

8

Tương tự như các câu trả lời khác, tôi có thể xóa cảnh báo bằng cách thay đổi $(VALID_ARCHS)(Kiến trúc hợp lệ) thành $(ARCHS_STANDARD). Từ đó, tôi đã xóa tất cả Dữ liệu gốc và khởi động lại Xcode 10.0. Điều này đã làm cho cảnh báo biến mất hoàn toàn. Việc xóa mọi thứ khỏi Kiến trúc hợp lệ chỉ làm xuất hiện một cảnh báo khác ("Không tìm thấy kiến ​​trúc hợp lệ").


1

Giải pháp đơn giản hơn: trong Kiến trúc hợp lệ chỉ cần thay thế arm64 bằng x86_64 .

Gặp sự cố tương tự và ba cảnh báo sau trong dự án của tôi: Gặp sự cố tương tự và cảnh báo sau trong dự án của tôi

Các kiến ​​trúc hợp lệ của tôi ban đầu là ** Kiến trúc hợp lệ ** của tôi ban đầu là

Thay thế:

  • armv7 với i386,
  • armv7s với i386,
  • và arm64 với x86_64

(như đã đề cập trong Cảnh báo) là giải pháp của tôi. Kết quả trong cài đặt Kiến trúc hợp lệ là:

Thay thế armv7 bằng i386, armv7s bằng i386 và, arm64 bằng x86_64 như đã đề cập trong Cảnh báo là giải pháp của tôi

Sau khi thay thế, ba cảnh báo ở trên của tôi đã biến mất.

Thông tin sâu sắc hơn về các Kiến trúc có thể được tìm thấy tại đây: https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/

Tôi nghĩ rằng công thức của cảnh báo này trong Xcode là một chút nhầm lẫn.


1

Nếu bạn đang gặp sự cố trong Flutter:

  1. Xóa thư mục Podfile, Podfile.lock, Pods, Runner.xcworkspace, Flutter.framework.

  2. Chạy đi flutter clean.

  3. Chạy đi flutter build ios.

0

Tôi đã nhìn thấy cảnh báo này khi cố gắng biên dịch mã cho cả iOS và Mac OS. Tôi đã có thể giải quyết vấn đề này bằng cách đầu tiên thực hiện những gì Hassan Taleb đề xuất trong câu trả lời của anh ấy: xóa các kiến ​​trúc để chỉ những kiến ​​trúc iPhone hợp lệ mới có trong đó. Và cuối cùng, để duy trì khả năng xây dựng cho Mac OS, hãy vẫy chuột qua các Kiến trúc hợp lệ để một nút dấu cộng xuất hiện. Nhấp vào đó và sau đó bạn có thể thêm các cài đặt riêng biệt cho các nền tảng khác nhau nếu cần, bao gồm các kiến ​​trúc CPU khác nhau. Đối với SDK macOS, tôi có thể đặt Kiến trúc hợp lệ của mình thành chỉ x86_64 nếu tôi muốn.Đối với SDK macOS, tôi có thể đặt Kiến trúc hợp lệ của mình thành chỉ x86_64 nếu tôi muốn


trên Xcode hiện tại nó không tồn tại tùy chọn này nữa.
JBarros35

@lambdapool bạn không thấy tùy chọn nào? Có phải là "Kiến trúc hợp lệ" / "VALID_ARCHS" không?
joelliusp

0

Tôi thấy cách dễ nhất để giải quyết vấn đề này là mở dự án trong trình soạn thảo văn bản của mình, sau đó tìm và xóa tất cả các VALID_ARCHSdòng.


0

Tôi cũng đang phải đối mặt với vấn đề tương tự. Để giải quyết, tôi vừa thay đổi hệ thống xây dựng từ Standard sang Legacy và điều đó đã giải quyết được sự cố.


0

Tôi đã thấy cảnh báo tương tự khi tôi xây dựng khuôn khổ của mình. Sau một thời gian, nhận thấy các giá trị kiến ​​trúc hợp lệ này khác nhau tùy thuộc vào loại thiết bị bất kể giá trị trong cài đặt bản dựng.

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

-2

nếu [Cài đặt bản dựng] của bạn là armv7 armv7s arm64, vui lòng xóa armv7s. cảnh báo sẽ bị hủy bỏ.


nó không chỉ là về armv7, đó là một vấn đề chung và đề xuất của bạn không phải là hướng về tương lai
amok
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.