Dalam proyek saya saat ini, saya menggunakan beberapa file .so. Ini terletak di folder armeabi dan armeabi-v7a. Sayangnya salah satu file .so adalah 6MB dan saya perlu mengurangi ukuran file. Alih-alih memiliki file APK yang gemuk, saya hanya ingin menggunakan file armeabi dan menghapus folder armeabi-v7a.
Menurut dokumentasi NDK, kode armeabi-v7a adalah kode armeabi diperpanjang yang dapat berisi instruksi CPU tambahan. Ini semua melampaui keahlian saya, tetapi saya mempertanyakan mengapa orang ingin memiliki kode armeabi-v7a dan armeabi. Pasti ada alasan bagus untuk memiliki keduanya, bukan?
Pada perangkat pengujian saya ini semua tampaknya berfungsi dengan baik. Ini memiliki CPU ARM v7. Apakah aman untuk menganggap bahwa semuanya berfungsi sekarang?
sumber
armeabi is deprecated in NDK r16. Removed in NDK r17. No hard float.
Jawaban:
Tergantung pada apa kode asli Anda, tetapi v7a memiliki dukungan untuk operasi perangkat keras floating point, yang membuat perbedaan besar. armeabi akan bekerja dengan baik di semua perangkat, tetapi akan jauh lebih lambat, dan tidak akan memanfaatkan kemampuan CPU perangkat yang lebih baru. Jangan mengambil beberapa tolok ukur untuk aplikasi khusus Anda, tetapi menghapus binari armeabi-v7a umumnya bukan ide yang baik. Jika Anda perlu mengurangi ukuran, Anda mungkin ingin memiliki dua aplikasi terpisah untuk perangkat yang lebih lama (armeabi) dan yang lebih baru (armeabi-v7a).
sumber
EABI = Antarmuka Biner Aplikasi Tertanam. Ini adalah spesifikasi yang harus dipatuhi oleh yang dapat dieksekusi untuk dieksekusi dalam lingkungan eksekusi tertentu. Ini juga menentukan berbagai aspek kompilasi dan keterkaitan yang diperlukan untuk interoperasi antara perkakas yang digunakan untuk Arsitektur ARM. Dalam konteks ini ketika kita berbicara tentang armeabi kita berbicara tentang arsitektur ARM dan OS GNU / Linux. Android mengikuti ARM GNU / Linux ABI little-endian.
aplikasi armeabi akan berjalan pada ARMv5 (mis. ARM9) dan ARMv6 (mis. ARM11). Anda dapat menggunakan perangkat keras Floating Point jika Anda membangun aplikasi menggunakan opsi GCC yang tepat seperti -mfpu = vfpv3 -mfloat-abi = softfp yang memberitahu kompiler untuk membuat instruksi floating point untuk perangkat keras VFP dan memungkinkan konvensi pemanggilan soft-float. armeabi tidak mendukung konvensi pemanggilan terapung (itu berarti register FP tidak digunakan untuk berisi argumen untuk suatu fungsi), tetapi operasi FP di HW masih didukung.
Aplikasi armeabi-v7a akan berjalan pada perangkat Cortex A # seperti Cortex A8, A9, dan A15. Ini mendukung prosesor multi-core dan mendukung -mfloat-abi = hard . Jadi, jika Anda membangun aplikasi menggunakan -mfloat-abi = hard , banyak panggilan fungsi Anda akan lebih cepat.
sumber
The armeabi-v7a ABI uses the -mfloat-abi=softfp switch
. Jadi apa yang Anda maksud dengan support -mfloat-abi = hard ?Yang sebaliknya adalah strategi yang jauh lebih baik. Jika Anda harus
minSdkVersion
14 dan mengunggah apk ke play store, Anda akan melihat bahwa Anda akan mendukung jumlah perangkat yang sama baik Anda mendukungarmeabi
atau tidak. Oleh karena itu, tidak ada perangkat dengan Android 4 atau lebih tinggi yang akan mendapat manfaatarmeabi
sama sekali.Ini mungkin mengapa Android NDK bahkan tidak mendukung
armeabi
lagi sesuai revisi r17b. [ sumber ]sumber