“Peringatan: Aplikasi iPhone harus menyertakan arsitektur armv6” bahkan dengan set konfigurasi build

332

Sudah lama sejak saya harus menyesuaikan pengaturan membangun proyek. Setelah memutakhirkan ke SDK baru-baru ini saya mengalami masalah dalam membangun konfigurasi distribusi ad hoc saya.

Build menghasilkan peringatan dan kesalahan ini:

peringatan: Aplikasi iPhone harus menyertakan arsitektur armv6 (ARCHS saat ini = "armv7")

iPhone / iPod Touch: aplikasi yang dapat dijalankan tidak memiliki arsitektur yang diperlukan. Setidaknya satu dari arsitektur berikut harus ada: armv6 (-19033)

Namun dalam proyek saya, saya pikir saya sudah mengatur semuanya dengan benar:

  • Arsitektur adalah: Standar (armv6 armv7)
  • Base SDK: iOS terbaru (saat ini diatur ke iOS 4.2)
  • Arsitektur yang valid: armv6 armv7

teks alternatif

Saya telah membersihkan semua target.

Saya menghargai tips apa pun.

Nick
sumber
Milik saya adalah aplikasi lama yang mendapat pembaruan, dan itu melempar kesalahan yang sama untuk Target Penerapan iOS <4.3 juga! Jadi solusi saya adalah menghapus semua referensi ke armv6 dan mengaturnya ke> = 4.3. Itu berhasil.
Henrik Erlandsson
Dan baru saja saya mencoba hal yang sama untuk aplikasi lama lain yang mendapat pemeriksaan ulang dan tidak berfungsi ... masalah XCode 5, sepertinya salah membaca Build Settings, sepertinya.
Henrik Erlandsson

Jawaban:

418

Jika menggunakan Xcode 4.2 atau lebih tinggi, coba yang berikut ini:

  1. Klik nama Proyek Anda (di kolom kiri), diikuti oleh Target:

    masukkan deskripsi gambar di sini

  2. Klik tab 'Bangun Pengaturan' (di kolom kanan):

    masukkan deskripsi gambar di sini

  3. Klik baris 'Rilis' atau 'Distribusi' di bawah 'Arsitektur', dan pilih 'Lainnya ...':

    masukkan deskripsi gambar di sini

  4. Klik dua kali baris yang disorot bernama '$ (ARCHS_STANDARD_32_BIT)' di jendela sembulan yang muncul, dan ganti dengan mengetikkan 'armv6'. Kemudian tambahkan baris baru dengan tombol plus di kiri bawah popover, dan ketik 'armv7', lalu klik Selesai:

    masukkan deskripsi gambar di sini

Pembaruan: Anda harus menambahkan armv7 untuk menargetkan iPhone 5 juga. (Dan jatuhkan armv6 jika membangun dengan Xcode 4.5 atau lebih tinggi, yang tidak lagi mendukung armv6.)

Itu dia. Anda sekarang seharusnya dapat membangun / mengarsipkan tanpa menghasilkan kesalahan.

Jika masih tidak berfungsi, lihat jawaban ini dari justinxreese , yang menyarankan menambahkan entri untuk armv6 dan armv7 di bawah "Kemampuan Perangkat yang Diperlukan" di file info.plist Anda.

Nick
sumber
3
Yap, sepertinya Apple menjauh dari ARM6, jadi ini sepertinya merupakan langkah yang diperlukan untuk Xcode 4.2. Sungguh aneh bahwa proses pengiriman masih membutuhkan build ARM6, meskipun 4.2 sekarang sudah umum ...
Jasarien
7
Saya tidak memiliki baris distribusi di bawah arsitektur, sebaliknya saya memiliki baris "Rilis". tidak tahu bagaimana melakukannya
OMGPOP
2
@ Let'sSpotIt Cukup tambahkan armv6 dan armv7 ke baris Release Anda. Proyek di tangkapan layar saya diimpor dari versi Xcode yang lebih lama, karena itu nama Arsitekturnya berbeda.
Nick
2
Terima kasih Nick. Juga, proyek-proyek baru yang dibuat di Xcode 4.2 mungkin perlu mengubah info.plist file mereka untuk mendukung perangkat armv6. Lihat jawaban tambahan saya di bawah ini.
MattyG
1
@Tidak terima kasih atas tipnya, dan bagi saya saya harus memilih "Project" daripada "Target". memilih dari pengaturan bangunan "Target" tidak berhasil untuk saya. toh terima kasih lagi atas bantuannya.
Prasad De Zoysa
62

Jika Anda menghapus centang "Bangun Arsitektur Aktif Saja", maka itu akan membangun semua arsitektur yang valid.

Pembaruan : Ini tidak lagi berlaku pada Xcode 4 - ikuti instruksi Nick untuk Xcode 4 dan yang lebih baru.

Brian
sumber
11
Anda dapat mempercepat waktu pembuatan Anda dengan mengatur ke YA untuk pembuatan Debug, dan No on Release builds.
Billy Gray
59

Saya memiliki masalah ini bahkan setelah mengikuti jawaban yang diterima dan menemukan yang berikut ini berfungsi:

Di Info.plist Anda, tambahkan entri untuk Kemampuan Perangkat yang Diperlukan. Ini harus berupa array dan akan memiliki dua entri.

  • Butir 0: armv6
  • Butir 1: armv7

Ini akan terlihat seperti ini:

Masuk kemampuan perangkat yang diperlukan

justinxreese
sumber
Solusi ini memperbaiki peringatan arsitektur saya yang lain, tetapi saya masih mendapatkan yang pertama, dan saya juga mengatur "Build Active Architecture Only" ke "Tidak"
Dan F
memperbaikinya untuk saya, karena solusi sebelumnya tidak berlaku. Untuk beberapa alasan armv6 tidak muncul lagi di bawah pengaturan arsitektur build saya: S
seeafish
Ini bersama dengan jawaban nick di atas memperbaikinya untuk saya. +1
Saurabh Wadhwa
Anda harus menghapus opsi ini sama sekali dalam versi xCode terbaru, maka itu akan dikompilasi. Ketika Anda meletakkan keduanya maka akan membutuhkan kedua arsitektur untuk valid di perangkat Anda yang praktis tidak mungkin
Artem
Untuk membangun dengan XCode 4.5+, Anda harus melepaskan armv6 dari kemampuan perangkat yang diperlukan.
Pulkit Goyal
26

Selain jawaban Nick tentang Xcode 4.2, Anda mungkin juga perlu meninjau file info.plist Anda. Sepertinya proyek baru dimulai di Xcode 4.2 secara default tentukan 'armv7' di 'Kemampuan Perangkat yang Dibutuhkan'. Anda harus menghapus ini jika ingin mendukung perangkat yang menjalankan armv6 (mis. IPhone 3G).

masukkan deskripsi gambar di sini

Hapus armv7 dari 'Kemampuan perangkat yang diperlukan' di YourProjectName-Info.plist Anda

MattyG
sumber
21

Pembaruan ios 6

Perubahan dalam Xcode 4.5.x untuk ios 6

  1. Xcode 4.5.x (dan yang lebih baru) tidak mendukung pembuatan binari armv6.
  2. Sekarang termasuk dukungan iPhone 5 / armv7s.
  3. Target penyebaran minimum yang didukung dengan Xcode 4.5.x atau yang lebih baru adalah iOS 4.3.
Animesh
sumber
6

Saya punya masalah ini juga. Saya hanya menetapkan target penempatan saya ke 4.3 dan hanya meninggalkan arsitektur armv7 dan berhasil. Pada titik hampir semua orang memiliki 5, jadi 4.3 baik-baik saja.

Tom Kincaid
sumber
3

bagi saya itu tidak bekerja dengan setiap jawaban. tapi saya mencoba TARGET> Arsitektur> Debug dan menambahkan baris baru dengan tombol plus, dan ketik 'armv6' (tanpa '), lalu klik Selesai.

dan akhirnya CMD + B dan kemudian klik kanan di PrjectName.app (dalam folder Products)> Buka di Finder> Compress "PROJECT_NAME.APP" (di Debug-iphoneos)> Unggah ke AppStore

masukkan deskripsi gambar di sini

itu pengaturan layar saya. masukkan deskripsi gambar di sini

jika Anda sudah menyertakan proyek, harap konfigurasikan semuanya. Semoga bantuan Anda.

mr.octobor
sumber
1
Saya juga harus mengatur armv6 pada Arsitektur Rilis sebelum itu akan berhasil.
mph
3

Setelah mencoba campuran dari jawaban-jawaban ini, saya akhirnya menemukan berhasil. Saya sangat kesal pada Apple sekarang. Hanya satu jam mereka membuatku sia-sia. Ini konfigurasi saya.

masukkan deskripsi gambar di sini

Louie
sumber
2

Saya mencoba semua jawaban di atas, tidak ada yang menjawab pertanyaan saya. Jadi saya membuat proyek baru dan mengubah pengaturan pembangunan satu per satu. Hanya "File Izin Alternatif" yang berbeda. Pembangunan proyek gagal memiliki nilai armv7. Hapus lalu bersih-> build-> arsip. Berhasil! Semoga bisa menyelesaikan pertanyaan Anda

mbo
sumber
2

Wow, saya memperbarui / mengirimkan aplikasi setiap 6 bulan. Setiap kali saya melakukan ini, saya harus belajar cara "baru" untuk melakukannya ...

Masalah yang sama seperti yang dijelaskan di atas ketika menjalankan iOS 5.1, dan Xcode 4.3.2

Terima kasih untuk postingnya! Saya menghabiskan beberapa saat memperbarui semua pengaturan proyek ke armv6, armv7, tetapi tidak ada sukacita. Ketika saya mengatur "membangun arsitektur aktif saja" ke Tidak, saya mendapat galat build tentang menempatkan kedua objek di direktori yang sama.

Untungnya, saya perhatikan kalian memodifikasi pengaturan target build sebagai gantinya. Inilah yang akhirnya berhasil (armv6, armv7, dan pengaturan "hanya membangun arsitektur aktif" ke Tidak di bawah Pengaturan build target). Sebagai penafian, saya telah mengatur semua arsitektur ke armv6, armv7 dalam pengaturan proyek juga.

Bagaimanapun, terima kasih atas bantuannya, Brent

Brent
sumber
2

Saya harus memastikan untuk mengubah pengaturan ini di kedua pengaturan Target dan Proyek di xCode 4.3.2 setelah melakukan itu dan pengaturan untuk membangun untuk armv6 dan armv7 di mana pun saya bisa mengirimkan aplikasi saya.

Untuk ukuran yang aman, saya juga keluar xCode antara membuat perubahan dan melakukan siklus bersih, membangun, arsip.

pwbrewer
sumber
0

Masalah yang cukup menyakitkan bagi saya juga. Hanya menghabiskan sekitar satu jam mencoba membangun dan membangun kembali - tidak ada sukacita. Pada akhirnya saya harus melakukan ini:

  1. Tingkatkan SDK dasar ke yang terbaru (dalam kasus saya iOS 5)
  2. Mulai ulang xCode
  3. Bersihkan & Bangun
  4. Berhasil!

Saya kira itu adalah kumpulan jargon tentang arm6, arm7 karena kelihatannya proyek saya valid untuk keduanya, setidaknya pengaturan sepertinya mengatakan demikian), dugaan saya adalah ini adalah cara sinis untuk memperdaya kami dengan teknis, yang kami tidak mengerti, jadi kami hanya mengambil opsi yang mudah dan menargetkan iOS terbaru (bagus untuk Apple dengan lebih banyak orang yang terkini) ....

dijipiji
sumber
0

Berikut ini dokumentasi Apple:

T&J Teknis QA1760

Dikatakan ada dua hal yang harus Anda lakukan dengan benar:

  1. Menambahkan armv6 ke pengaturan build Arsitektur
  2. Atur Bangun Arsitektur Aktif Hanya ke No.

Jika ini masih tidak membantu Anda, periksa kembali apakah Anda benar-benar mengubah pengaturan arsitektur bangunan untuk konfigurasi pembangunan yang benar - saya menghabiskan setengah jam mengutak-atik yang salah dan bertanya-tanya mengapa itu tidak berhasil ...

Pilih Edit Scheme...di menu Produk, klik skema "Arsip" di daftar sebelah kiri dan periksa Konfigurasi Bangun. Ubah nilainya jika bukan itu yang Anda harapkan.

Rolf Staflin
sumber
0

Catatan; Saya harus melakukan langkah-langkah ini untuk proyek basis saya, dan file .xcodeproj PhoneGap yang tertanam dalam aplikasi saya.

Ya, saya menyematkan PhoneGap; mereka sering memperbarui jauh, dan saya punya waktu kurang dari dua bulan untuk mengetahui bahwa suatu fitur disusutkan.

James Perih
sumber
0

Coba ubah target penempatan Anda menjadi sesuatu yang lebih tinggi dari prosesor armv6. Pengaturan untuk xCode merujuk pada tingkat sistem operasi, misalnya: Versi iOS # {3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) Anda dapat mengatur ini di tab pengaturan build atau tab ringkasan. Mulai di kiri atas jendela di Project Navigator, dengan semua file yang terdaftar di dalamnya. Klik yang paling atas yang memiliki ikon biru.

(ii) Jika Anda berencana menggunakan sirkuit garis shader yang dapat diprogram, yang diakses dan dikendalikan melalui openGL ES 2.0 API, maka Anda harus mengatur "Versi Penerapan" Anda menjadi sekitar 4,3, yang saya yakin hanya tersedia pada perangkat seperti 3GS atau lebih baru. xCode melaporkan bahwa iOS 4.2.5 atau lebih tinggi diperlukan untuk menjalankan kode armv7. Dan sekali lagi, prosesor ini, saya percaya, dimulai dengan 3GS. * IOS 4.3 tampaknya menjadi pilihan bagi saya, untuk saat ini.

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

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

Marc Clint Dion
sumber
0

Jika xCode terus mengeluh tentang armv7, pastikan Anda memutuskan perangkat apa pun yang terhubung (terutama iPhone 5 !!) dan coba lagi. Butuh waktu berjam-jam untuk mengetahui informasi kecil itu.

refaelio
sumber
0

Menggunakan Xcode 4.2 pada Snow Leopard, saya menggunakan pengaturan berikut untuk membangun aplikasi yang bekerja pada kedua armv6 (Iphone 3G dan lebih rendah) DAN armv7 (semuanya lebih baru dari 3G termasuk 3GS).

arsitektur: armv6 dan armv7 (dihapus $ (ARCHS_STANDARD_32_BIT))
membangun arsitektur aktif saja: tidak ada
kemampuan perangkat yang diperlukan: armv6

jangan letakkan armv7 dalam kemampuan perangkat yang diperlukan jika Anda ingin aplikasi berjalan pada 3G dan lebih rendah juga.

noromamai
sumber
1
itu satu-satunya yang bekerja untuk saya. menguji pada iphone4, iphone3g, ipad1, ipad2. membaca bahwa saya harus meletakkan armv6 DAN armv7 dalam kemampuan perangkat yang diperlukan, tetapi begitu saya memasukkan armv7, aplikasi tidak akan mengunggah / menjalankan iphone3g
noromamai
Meninggalkan entri armv7 di "Capabilites perangkat yang diperlukan" membuat Xcode melarang saya untuk berjalan di iPhone 3G.
siang