Cảnh báo của người dùng: Các ứng dụng iPhone nên bao gồm kiến ​​trúc armv6, ngay cả với bộ cấu hình bản dựng


332

Đã được một thời gian kể từ khi tôi phải điều chỉnh cài đặt xây dựng dự án. Sau khi nâng cấp lên SDK gần đây, tôi gặp khó khăn khi xây dựng cấu hình phân phối ad hoc của mình.

Build tạo cảnh báo và lỗi này:

cảnh báo: Ứng dụng iPhone phải bao gồm kiến ​​trúc armv6 (ARCHS hiện tại = "armv7")

iPhone / iPod Touch: ứng dụng thực thi bị thiếu kiến ​​trúc bắt buộc. Ít nhất một trong các kiến ​​trúc sau phải có mặt: armv6 (-19033)

Tuy nhiên, trong dự án của tôi, tôi nghĩ rằng tôi đã đặt đúng thứ:

  • Kiến trúc là: Tiêu chuẩn (armv6 armv7)
  • SDK cơ sở: iOS mới nhất (hiện được đặt thành iOS 4.2)
  • Kiến trúc hợp lệ: armv6 armv7

văn bản thay thế

Tôi đã làm sạch tất cả các mục tiêu.

Tôi đánh giá cao bất kỳ lời khuyên.


Của tôi là một ứng dụng cũ đã có bản cập nhật và nó cũng gây ra lỗi tương tự cho Mục tiêu triển khai iOS <4.3! Vì vậy, giải pháp của tôi là xóa tất cả các tham chiếu đến armv6 và đặt giá trị này thành> = 4.3. Nó đã làm việc.
Henrik Erlandsson

Và bây giờ tôi đã thử tương tự cho một ứng dụng cũ khác có bản sửa lỗi và nó không hoạt động ... Vấn đề XCode 5, nó đã đọc sai Cài đặt bản dựng, có vẻ như vậy.
Henrik Erlandsson

Câu trả lời:


418

Nếu sử dụng Xcode 4.2 trở lên, hãy thử các cách sau:

  1. Nhấp vào tên dự án của bạn (ở cột bên trái), theo sau là Target:

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

  2. Nhấp vào tab 'Cài đặt bản dựng' (ở cột bên phải):

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

  3. Nhấp vào hàng 'Phát hành' hoặc 'Phân phối' trong 'Kiến trúc' và chọn 'Khác ...':

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

  4. Nhấp đúp vào hàng được tô sáng có tên '$ (ARCHS_STANDARD_32_BIT)' trong cửa sổ bật lên xuất hiện và thay thế bằng cách nhập 'armv6'. Sau đó, thêm một hàng mới với nút dấu cộng ở dưới cùng bên trái của cửa sổ bật lên và nhập 'armv7', sau đó nhấp Xong:

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

Cập nhật: bạn cũng nên thêm armv7 để nhắm mục tiêu vào iPhone 5. (Và thả armv6 nếu xây dựng với Xcode 4.5 trở lên, không còn hỗ trợ armv6.)

Đó là nó. Bây giờ bạn có thể xây dựng / lưu trữ mà không tạo ra lỗi.

Nếu nó vẫn không hoạt động, hãy xem câu trả lời này từ justinxreese , gợi ý thêm các mục nhập cho armv6 và armv7 trong "Khả năng thiết bị cần thiết" trong tệp thông tin của bạn.


3
Đúng, có vẻ như Apple đang rời khỏi ARM6, vì vậy đây dường như là một bước cần thiết cho Xcode 4.2. Thật kỳ lạ khi quy trình gửi vẫn yêu cầu bản dựng ARM6, mặc dù 4.2 hiện đang công khai ...
Jasarien

7
Tôi không có hàng phân phối theo kiến ​​trúc, thay vào đó tôi có hàng "Phát hành". không biết làm thế nào
OMGPOP

2
@ LetSpotIt Chỉ cần thêm armv6 và armv7 vào hàng Phát hành của bạn. Dự án trong ảnh chụp màn hình của tôi đã được nhập từ một phiên bản Xcode trước đó, do đó có các tên Kiến trúc khác nhau.
Nick

2
Cảm ơn Nick. Ngoài ra, các dự án mới được tạo trong Xcode 4.2 có thể cần phải thay đổi tệp info.plist của chúng để hỗ trợ các thiết bị armv6. Xem câu trả lời bổ sung của tôi dưới đây.
MattyG

1
@Nick cảm ơn vì tiền boa, và đối với tôi, tôi đã phải chọn "Dự án" thay vì "Mục tiêu". chọn từ cài đặt bản dựng "Target" không phù hợp với tôi. dù sao cũng cảm ơn một lần nữa vì sự giúp đỡ
Prasad De Zoysa

62

Nếu bạn bỏ chọn "Chỉ xây dựng kiến ​​trúc hoạt động", thì nó sẽ xây dựng tất cả các kiến ​​trúc hợp lệ.

Cập nhật : Điều này không còn áp dụng được kể từ Xcode 4 - hãy làm theo hướng dẫn của Nick cho Xcode 4 trở lên.


11
Bạn có thể tăng tốc thời gian xây dựng của mình bằng cách đặt thành CÓ cho các bản dựng Gỡ lỗi và Không có bản dựng Phát hành.
Billy Gray

59

Tôi đã có vấn đề này ngay cả sau khi làm theo câu trả lời được chấp nhận và tìm thấy những điều sau đây để làm việc:

Trong Info.plist của bạn, hãy thêm một mục nhập cho Khả năng thiết bị cần thiết. Đây phải là một mảng và sẽ có hai mục.

  • Mục 0: armv6
  • Mục 1: armv7

Nó sẽ trông giống thế này:

Yêu cầu nhập khả năng thiết bị


Giải pháp này đã sửa các cảnh báo kiến ​​trúc khác của tôi, nhưng tôi vẫn nhận được cảnh báo ban đầu và tôi cũng đã đặt "Chỉ xây dựng kiến ​​trúc hoạt động" thành "Không"
Dan F

đã sửa nó cho tôi, vì giải pháp trước đó không áp dụng. Vì một số lý do, armv6 không hiển thị trong cài đặt kiến ​​trúc xây dựng của tôi nữa: S
seeafish

Điều này cùng với câu trả lời của nick ở trên đã sửa nó cho tôi. +1
Saurabh Wadhwa

Bạn nên loại bỏ tùy chọn này ở tất cả các phiên bản xCode mới nhất, sau đó nó sẽ biên dịch. Khi bạn đặt cả hai thì nó sẽ yêu cầu cả hai cấu trúc phải hợp lệ trong thiết bị của bạn, điều này thực tế là không thể
Artem

Để xây dựng với XCode 4.5+, bạn sẽ phải bỏ armv6 khỏi các khả năng của thiết bị cần thiết.
Pulkit Goyalty

26

Ngoài câu trả lời của Nick về Xcode 4.2, bạn cũng có thể cần xem lại tệp info.plist của mình. Có vẻ như các dự án mới bắt đầu trong Xcode 4.2 theo mặc định chỉ định 'armv7' trong 'Khả năng thiết bị bắt buộc'. Bạn sẽ cần xóa phần này nếu muốn hỗ trợ các thiết bị chạy armv6 (ví dụ: iPhone 3G).

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

Xóa armv7 khỏi 'Khả năng thiết bị bắt buộc' trong yourProjectName-Info.plist


21

Bản cập nhật ios 6

Thay đổi trong Xcode 4.5.x cho ios 6

  1. Xcode 4.5.x (và phiên bản mới hơn) không hỗ trợ tạo nhị phân armv6.
  2. Bây giờ bao gồm hỗ trợ iPhone 5 / armv7s.
  3. Mục tiêu triển khai được hỗ trợ tối thiểu với Xcode 4.5.x trở lên là iOS 4.3.

6

Tôi cũng có vấn đề này. Tôi chỉ đặt mục tiêu triển khai của mình thành 4.3 và chỉ còn lại kiến ​​trúc armv7 và nó đã hoạt động. Tại thời điểm hầu hết mọi người đều có 5, vì vậy 4.3 là tốt.


3

Đối với tôi nó không hoạt động với mọi câu trả lời. nhưng tôi thử TARGETS> Architectures> Debug và thêm một hàng mới bằng nút dấu cộng và nhập 'armv6' (không có '), sau đó nhấp Xong.

và cuối cùng là CMD + B và sau đó nhấp chuột phải vào PrjectName.app (trong thư mục Sản phẩm)> Mở trong Finder> Nén "PRO DỰ_NAME.APP" (trong Debug-iphoneos)> Tải lên AppStore

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

đó là cài đặt màn hình của tôi. nhập mô tả hình ảnh ở đây

Nếu bạn có dự án bao gồm xin vui lòng cấu hình tất cả. Mong các bạn giúp đỡ.


1
Tôi cũng đã phải thiết lập armv6 trên Kiến trúc phát hành trước khi nó hoạt động.
mph

3

Sau khi thử hỗn hợp các câu trả lời này, cuối cùng tôi cũng tình cờ thấy nó hoạt động. Tôi rất tức giận tại Apple ngay bây giờ. Chỉ một giờ nữa họ đã làm tôi lãng phí. Đây là cấu hình của tôi.

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


2

Tôi đã thử tất cả các câu trả lời ở trên, không ai giải quyết được câu hỏi của tôi. Vì vậy, tôi tạo một dự án mới và tìm từng cài đặt xây dựng. Chỉ "Tệp quyền thay thế" là khác nhau. Việc xây dựng dự án thất bại có giá trị armv7. Xóa nó sau đó dọn dẹp-> xây dựng-> lưu trữ. Thành công! Hy vọng có thể giải quyết câu hỏi của bạn


2

Ồ, tôi cập nhật / gửi ứng dụng khoảng 6 tháng một lần. Mỗi lần tôi làm điều này, tôi phải học cách "mới" để làm điều đó ...

Các vấn đề tương tự như được mô tả ở trên khi chạy iOS 5.1 và Xcode 4.3.2

Cảm ơn cho bài viết! Tôi đã dành một lúc để cập nhật tất cả các cài đặt dự án lên armv6, armv7, nhưng không có niềm vui. Khi tôi đặt "chỉ xây dựng kiến ​​trúc hoạt động" thành Không, tôi gặp lỗi xây dựng về việc đặt cả hai đối tượng vào cùng một thư mục.

May mắn thay, tôi nhận thấy các bạn đang sửa đổi cài đặt xây dựng mục tiêu thay thế. Đây là những gì cuối cùng đã hoạt động (armv6, armv7 và cài đặt "chỉ xây dựng kiến ​​trúc hoạt động" thành Không trong Cài đặt xây dựng mục tiêu). Từ chối trách nhiệm, tôi đã đặt tất cả các kiến ​​trúc thành armv6, armv7 trong cài đặt dự án.

Dù sao, cảm ơn vì sự giúp đỡ, Brent


2

Tôi phải chắc chắn thay đổi các cài đặt này trong cả cài đặt Target và Project trên xCode 4.3.2 sau khi thực hiện và cài đặt nó để xây dựng cho cả armv6 và armv7 ở mọi nơi tôi có thể gửi ứng dụng của mình.

Để có biện pháp an toàn, tôi cũng đã thoát xCode giữa thực hiện các thay đổi và thực hiện chu trình lưu trữ, xây dựng, lưu trữ sạch sẽ.


0

Một vấn đề khá đau đớn đối với tôi quá. Chỉ mất khoảng một giờ để cố gắng xây dựng và xây dựng lại - không có niềm vui. Cuối cùng, tôi đã phải làm điều này:

  1. Nâng cấp SDK cơ sở lên bản mới nhất (trong trường hợp của tôi là iOS 5)
  2. Khởi động lại xCode
  3. Dọn dẹp & Xây dựng
  4. Nó đã làm việc!

Tôi đoán đó là một loạt các biệt ngữ về arm6, arm7 vì có vẻ như dự án của tôi có giá trị cho cả hai, ít nhất là các thiết lập có vẻ như vậy), tôi đoán đây là một cách hoài nghi để trêu chọc chúng tôi về các kỹ thuật, mà chúng tôi không Không hiểu, vì vậy chúng tôi chỉ chọn tùy chọn dễ dàng và nhắm mục tiêu iOS mới nhất (tốt cho Apple với nhiều người cập nhật hơn) ....


0

Đây là tài liệu của Apple:

Hỏi đáp kỹ thuật QA1760

Nó nói có hai điều mà bạn phải nhận được:

  1. Thêm vào armv6cài đặt Kiến trúc
  2. Đặt Build Architecture Architecture Only thành No.

Nếu điều này vẫn không giúp ích gì cho bạn, hãy kiểm tra kỹ xem bạn có thực sự thay đổi cài đặt xây dựng kiến ​​trúc cho cấu hình xây dựng đúng không - Tôi đã lãng phí nửa giờ để xử lý sai và tự hỏi tại sao nó không hoạt động ...

Chọn Edit Scheme...trong menu Sản phẩm, nhấp vào lược đồ "Lưu trữ" trong danh sách bên trái và kiểm tra Cấu hình bản dựng. Thay đổi giá trị nếu nó không như bạn mong đợi.


0

Ghi chú; Tôi đã phải thực hiện các bước này cho cả dự án cơ sở của mình và tệp PhoneGap .xcodeproj được nhúng trong ứng dụng của tôi.

Có, tôi nhúng PhoneGap; họ cập nhật thường xuyên và tôi chỉ mất chưa đầy hai tháng để biết rằng một tính năng đã bị khấu hao.


0

Hãy thử thay đổi mục tiêu triển khai của bạn thành thứ gì đó cao hơn bộ xử lý armv6. Các cài đặt cho xCode đang tham chiếu cấp độ hệ điều hành, ví dụ: phiên bản iOS # {3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) Bạn có thể đặt tùy chọn này trong tab cài đặt bản dựng hoặc tab tóm tắt. Bắt đầu ở phía trên bên trái của cửa sổ trong Project Navigator, với tất cả các tệp được liệt kê trong đó. Nhấp vào phần trên cùng có biểu tượng màu xanh.

(ii) Nếu bạn đang dự định sử dụng mạch dòng shader có thể lập trình, được truy cập và điều khiển thông qua API openGL ES 2.0, thì bạn nên đặt "Phiên bản triển khai" của mình thành khoảng 4.3, mà tôi tin rằng chỉ có trên các thiết bị như 3GS hoặc mới hơn. xCode đang báo cáo rằng iOS 4.2.5 trở lên là cần thiết để chạy mã armv7. Và một lần nữa, bộ xử lý này, tôi tin rằng, đã bắt đầu với 3GS. * IOS 4.3 dường như là sự lựa chọn cho tôi, cho đến bây giờ.

http://theiphonewiki.com/wiki/index.php?title=Armv7

http://en.wikipedia.org/wiki/List_of_iOS_devices


0

Nếu xCode tiếp tục phàn nàn về armv7, hãy đảm bảo bạn ngắt kết nối mọi thiết bị kết nối (đặc biệt là iPhone 5 !!) và thử lại. Mất hàng giờ để tìm ra mẩu thông tin nhỏ đó.


0

Sử dụng Xcode 4.2 trên Snow Leopard, tôi đã sử dụng các cài đặt sau để xây dựng một ứng dụng hoạt động trên cả armv6 (Iphone 3G trở xuống) AND armv7 (mọi thứ mới hơn 3G kể cả 3GS).

Kiến trúc: armv6 và armv7 (đã xóa $ (ARCHS_STANDARD_32_BIT)) chỉ
xây dựng kiến ​​trúc hoạt động: không
yêu cầu khả năng của thiết bị: armv6

không đặt armv7 trong các khả năng của thiết bị cần thiết nếu bạn muốn ứng dụng chạy trên 3G và thấp hơn nữa.


1
đó là điều duy nhất làm việc cho tôi thử nghiệm trên iphone4, iphone3g, ipad1, ipad2. đọc rằng tôi phải đặt armv6 VÀ armv7 trong các khả năng của thiết bị cần thiết, nhưng ngay khi tôi cài armv7, ứng dụng sẽ không tải lên / chạy trên iphone3g
noromamai

Rời khỏi mục armv7 trong "Các thiết bị cần thiết cho thiết bị" khiến Xcode cấm tôi chạy trên iPhone 3G.
tinsukE
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.