v7a studio que procesador celulares armv8l armeabi android shared-libraries

android - studio - ¿Qué es armeabi y por qué lo usan?



armv8l que es (3)

Hace poco vi un article bastante bueno relacionado con las diferentes CPU y sugerencias sobre cómo mantener el tamaño de APK a la vez que les brindaba soporte. El artículo proporciona información para lo siguiente:

  • mips
  • mips64
  • X86
  • X86-64
  • arm64-v8a
  • armeabi
  • armeabi-v7a

Veo esta biblioteca (armeabi) muchas veces cuando exploro fuentes abiertas.

Busqué una explicación de ello, pero todos los resultados que encontré hablan de eso y no lo definen.

¿Qué es esto armeabi y por qué lo usan en aplicaciones de Android?


Los dispositivos Android tienen CPU. Muchas de esas CPU se basan en la arquitectura ARM, mientras que otras se basan en x86, y algunas otras se basan en otras cosas como MIPS.

Algunas aplicaciones de Android usan el Kit de desarrollo nativo (NDK) para crear código C / C ++ para vincular a su aplicación. El código C / C ++ debe compilarse para una arquitectura de CPU específica. El NDK coloca la versión del código C / C ++ compilada para cada arquitectura en un directorio específico de la arquitectura. Uno de esos directorios es armeabi/ , que es para una CPU ARM genérica. También hay armeabi-v7/ (para una CPU compatible con ARM v7), x86/ (para CPU x86), etc.


ABI - Interfaz Binaria de Aplicación

EABI - Interfaz Binaria de Aplicación Embebida

Así que ARMEABI son compilaciones compiladas que coinciden con la arquitectura de la CPU de su dispositivo Android.

p.ej

arm64-v8a (Nexus 5x) - 64 bits - ARM Cortex-A35, ARM Cortex-A53, ARM Cortex-A57, ARM Cortex-A72, ARM Cortex-A73

armeabi-v7a - 32 bits - ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15, ARM Cortex-A17

Para incluir * .so binary jniLibs con Android Studio 2.3 colóquelos en la carpeta src/main/jniLibs y agregue la siguiente configuración a su archivo * .gradle:

android { sourceSets { main { jniLibs.srcDirs = [''src/main/jniLibs''] } } } dependencies { compile fileTree(dir: ''jniLibs'', include: [''*.so'']) }