Câu trả lời:
Kiến trúc là những kiến trúc bạn muốn xây dựng, những kiến trúc hợp lệ là những kiến trúc bạn có thể nghĩ về việc xây dựng bằng codebase của mình.
Vì vậy, có thể bạn chỉ muốn xây dựng tệp nhị phân của mình cho armv7s, nhưng cùng một mã nguồn sẽ biên dịch tốt cho armv7 và armv6. Vì vậy VALID_ARCHS = armv6 armv7 armv7s
, nhưng bạn đặt ARCHS = armv7s
vì đó là tất cả những gì bạn thực sự muốn xây dựng với mã của mình.
Hoặc, trong Apple-ese:
ARCHS (Kiến trúc)
Danh sách số nhận dạng được phân tách bằng dấu cách. Chỉ định các kiến trúc (ABI, mô hình bộ xử lý) mà tệp nhị phân được nhắm mục tiêu. Khi cài đặt xây dựng này chỉ định nhiều hơn một kiến trúc, tệp nhị phân được tạo có thể chứa mã đối tượng cho mỗi kiến trúc được chỉ định.
và:
VALID_ARCHS (Kiến trúc hợp lệ)
Danh sách số nhận dạng được phân tách bằng dấu cách. Chỉ định các kiến trúc mà tệp nhị phân có thể được xây dựng. Trong quá trình xây dựng, danh sách này được giao với giá trị của cài đặt bản dựng ARCHS; danh sách kết quả chỉ định các kiến trúc mà hệ nhị phân có thể chạy. Nếu danh sách kiến trúc kết quả trống, mục tiêu không tạo ra tệp nhị phân.
Nguồn: Tham khảo cài đặt bản dựng Xcode
Trong thực tế, bạn để VALID_ARCHS
một mình và không lo lắng về việc thay đổi nó, và chỉ cần ARCHS
mày mò để thiết lập các kiến trúc bạn muốn xây dựng. Thông thường, bạn đặt bản dựng Gỡ lỗi thành chỉ NATIVE_ARCH
, vì bạn chỉ muốn tạo phiên bản gỡ lỗi cho máy mà bạn sẽ thử nghiệm / chạy nó và Bản dựng phát hành cho toàn bộ kiến trúc mà bạn định hỗ trợ.
Từ tài liệu của Apple, chúng ta biết rằng Xcode nhị phân sẽ xây dựng là danh sách được Valid Architectures
giao với Architectures
.
Vì vậy, tôi không nghĩ câu trả lời của Jeremy là đúng, như anh ấy nói:
Vì vậy, có thể bạn chỉ muốn xây dựng tệp nhị phân của mình cho armv7s, nhưng cùng một mã nguồn sẽ
biên dịch tốt cho armv7 và armv6. Vì vậyVALID_ARCHS = armv6 armv7 armv7s
, nhưng bạn đặt ARCHS = armv7s vì đó là tất cả những gì bạn thực sự muốn tạo bằng mã của mình.
Khi bạn đặt VALID_ARCHS = armv6 armv7 armv7s
và đặt ARCHS = armv7s
, kết quả của Xcode nhị phân sẽ tạo là armv7s , nó không thể tương thích với armv6 / armv7.
Và nếu bạn muốn tương thích với armv6 / armv7 / armv7s ,, bạn phải đặt VALID_ARCHS = armv6 armv7 armv7s
và ARCHS = armv6
. Bằng cách này, kết quả của Xcode nhị phân sẽ được tạo là armv6 và nó có thể chạy tốt trên cả armv6 / armv7 / armv7s vì bộ xử lý arm tương thích ngược .