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''])
}