r17b r16 r15b r13 para ndk instalar android android-ndk arm armv7

android - r16 - ¿Por qué usar código armeabi-v7a sobre código armeabi?



ndk para android (2)

En mi proyecto actual hago uso de múltiples archivos .so. Estos se encuentran en la carpeta armeabi y armeabi-v7a. Lamentablemente, uno de los archivos .so es de 6 MB y necesito reducir el tamaño del archivo. En lugar de tener un archivo APK gordo, me gustaría usar solo los archivos armeabi y eliminar la carpeta armeabi-v7a.

De acuerdo con la documentación de NDK, el código armeabi-v7a es un código armeabi extendido que puede contener instrucciones adicionales de la CPU. Todo esto va más allá de mi experiencia, pero me pregunto por qué a uno le gustaría tener el código armeabi-v7a y armeabi. Debe haber una buena razón para tener ambas, ¿verdad?

En mis dispositivos de prueba, todo parece funcionar bien. Estos tienen CPU ARM v7. ¿Es seguro asumir que todo funciona ahora?


Depende de lo que haga su código nativo, pero v7a tiene soporte para operaciones de punto flotante de hardware, lo que hace una gran diferencia. armeabi funcionará bien en todos los dispositivos, pero será mucho más lento y no aprovechará las capacidades de la CPU de los dispositivos más nuevos. Tome algunos puntos de referencia para su aplicación particular, pero eliminar los binarios de armeabi-v7a generalmente no es una buena idea. Si necesita reducir el tamaño, es posible que desee tener dos apk separados para dispositivos más antiguos (armeabi) y más nuevos (armeabi-v7a).


EABI = Interfaz Binaria de Aplicación Embebida. Son las especificaciones a las que debe ajustarse un ejecutable para ejecutarse en un entorno de ejecución específico. También especifica varios aspectos de la compilación y el enlace necesarios para la interoperación entre las cadenas de herramientas utilizadas para la arquitectura ARM. En este contexto, cuando hablamos de armeabi , hablamos de la arquitectura ARM y del sistema operativo GNU / Linux. Android sigue el poco-endian ARM GNU / Linux ABI.

La aplicación armeabi se ejecutará en ARMv5 (por ejemplo, ARM9) y ARMv6 (por ejemplo, ARM11). Puede usar hardware de punto flotante si construye su aplicación utilizando las opciones correctas de GCC como -mfpu = vfpv3 -mfloat-abi = softfp que le dice al compilador que genere instrucciones de coma flotante para el hardware de VFP y habilite las convenciones de llamadas de flotación suave. armeabi no es compatible con las convenciones de llamadas de flotación dura (significa que los registros de FP no se utilizan para contener argumentos para una función), pero las operaciones de FP en HW todavía son compatibles.

La aplicación armeabi-v7a se ejecutará en dispositivos Cortex A # como Cortex A8, A9 y A15. Es compatible con procesadores multi-core y es compatible con -mfloat-abi = hard . Entonces, si construyes tu aplicación usando -mfloat-abi = hard , muchas de tus llamadas a funciones serán más rápidas.