Di iOS5 Apple menjatuhkan arsitektur armv6 dari ARCHS_STANDARD_32_BIT .
Untuk menjaga dukungan untuk iPhone3G saya masih ingin mengkompilasi di armv6 bahkan di iOS5.
Adakah yang menemukan solusi untuk ini?
Saya baru saja membuat sesuatu hari ini dengan menentukan target penerapan iOS 4.0. Dengan hanya armv7 yang ditentukan dalam Arsitektur, Xcode memperingatkan saya bahwa untuk mendukung apa pun di bawah iOS4.2 saya harus menyertakan armv6 dalam Arsitektur. Cukup edit bidang itu, klik tombol "+" saat dialog muncul dan masukkan "armv6" literal.
Dalam kasus saya, kami ingin aplikasi kami berfungsi di bawah iOS4 dan iOS5. Kami harus membuat beberapa modifikasi sehingga akan berfungsi dengan benar di bawah iOS5, tetapi semua perubahan itu dilakukan dengan perubahan kode yang ramah iOS4.
Kami juga menambahkan beberapa kemampuan khusus iOS5 dengan cara yang memungkinkan aplikasi berjalan tanpa mogok di iOS4. Secara khusus, kami menguji kemampuan iOS5 sebelum mencoba menggunakannya, dan menautkan pustaka khusus iOS5 sebagai Opsional.
Jadi, mendukung iPhone3G di dunia iOS5 bisa dengan mudah berarti "kami ingin aplikasi kami berjalan di iOS4 dan di atasnya (terlepas dari penggunaan fitur iOS5)" daripada "kami ingin memastikan aplikasi kami berjalan di perangkat lama yang menjalankan iOS5 ". Ada perbedaan di sini; Pikirkan tentang itu. :-)
Bagaimanapun, menambahkan kembali dukungan armv6 sangat mudah. Dan saya kira intinya adalah ini: Pada titik tertentu, ketika tidak ada lagi perangkat armv6 di luar sana yang perlu dikhawatirkan (untuk alasan apa pun) Anda tidak perlu membuatnya untuk itu. Pandangan Apple adalah setiap orang harus meningkatkan ke perangkat keras terbaru secepat mungkin. Jadi di dunia itu, tidak perlu alat untuk default ke apa pun kecuali yang terbaru dan terhebat juga. :-) Untungnya (atau tidak), kami para pengembang hidup di dunia nyata dan menyadari bahwa Anda harus mendukung hal-hal lama untuk sementara waktu. Dan saya kira tim pengembang Xcode juga mengetahui hal ini, itulah sebabnya Anda dapat menambahkan kembali dukungan armv6 dengan cukup sederhana.
Jawaban sederhananya adalah Anda harus mengubah pengaturan saat ini dari "Standar (armv7) - $ (ARCHS_STANDARD_32_BIT)" menjadi "armv6" dan "armv7". Lihat gambar di bawah. Anda harus menghapus baris dengan pengaturan sebelumnya agar berfungsi.
sumber
juga pastikan Anda menetapkan ini di Proyek DAN Target ... saya butuh waktu satu jam untuk mengetahuinya. telah mengaturnya untuk satu tapi tidak untuk yang lain. semoga ini membantu. GLTA
sumber
Saya pikir ada alasan mengapa Apple menjatuhkan armv6 dari pengaturan standar.
Saya telah mengkompilasi armv7 / armv6 dengan iOS5 SDK, namun, compiler armv6 menghasilkan kode yang salah dalam mode rilis. Setelah berjam-jam menemukan solusi (mencoba llvm atau gcc dengan tingkat pengoptimalan yang berbeda) saya menyerah.
Jadi, saya akan kembali ke iOS SDK 4.x selama saya mendukung perangkat armv6 yang lebih lama.
Contoh kode:
Mungkin saya mengalami kerusakan memori, namun, pada kompiler armv7 dan pada iOSSDK <5.0 itu berperilaku seperti yang diharapkan.
salam Hormat
sumber
Belum yakin apakah ini sebenarnya adalah solusi, tetapi saya telah menemukan bahwa mengganti string yang ditentukan dalam "arsitektur", yaitu $ (ARCHS_STANDARD_32_BIT), dengan "armv6 armv7" memungkinkan saya untuk mengompilasi dengan iOS5 sebagai basis dan iOS4 sebagai penerapan target, dan lulus validasi.
Saya tidak menggunakan pustaka atau panggilan eksklusif IOS5, tetapi bermaksud untuk itu di rilis berikutnya.
sumber
Saya tidak perlu mengganti $ (ARCHS_STANDARD_32_BIT) hanya dengan armv7 agar aplikasi dapat dikompilasi dan diunggah ke App Store.
Seperti yang disarankan oleh MarkGranoff, saya hanya menambahkan armv6 sebagai teks biasa, dengan menekan plus dan hanya mengetiknya di baris dua.
sumber