v8a v7a usar para ndk how como armeabi android android-ndk jni cpu-architecture

v7a - how to use android ndk



¿Cómo apuntar múltiples arquitecturas usando NDK? (2)

Para la última versión (ahora r9) debe especificar en "jni / Application.mk"

APP_ABI := all

o

APP_ABI := armeabi armeabi-v7a x86 mips

sin ./ndk_build solo construirá ''armeabi''

Fondo

Recientemente comencé a desarrollar algunos códigos con el NDK, y pensé en un posible problema de portabilidad que podría ocurrir al desarrollar el uso de NDK.

El problema

Dado que NDK utiliza código nativo, debe compilarse según la arquitectura de la CPU. Esto es un problema ya que el usuario necesita ejecutar la aplicación sin importar qué CPU tenga el dispositivo.

Posibles soluciones que he encontrado hasta ahora.

Noté que puedo modificar el archivo "jni / Application.mk" y usar:

APP_ABI: = armeabi armeabi-v7a x86

sin embargo, no sé qué debo hacer a partir de este paso. ¿Contendrá la aplicación todo el código compilado para cada una de las arquitecturas de la CPU y elegirá automáticamente el correcto cuando se ejecute?

Además, ¿qué pasa si habrá otra arquitectura de CPU que sea desconocida?

¿Qué pasará si trato de ejecutar la aplicación en Google TV, que según lo que recuerdo no es compatible con el NDK?

Otra solución que he encontrado es el soporte multi-apk. Sin embargo, no estoy seguro de entenderlo. ¿Todo esto significa que creas el mismo APK, cada vez con una configuración diferente? ¿Ninguna herramienta de automatización especial de ADT para ayudar con eso?


Si no configura APP_ABI en absoluto, o usa

APP_ABI := all

en su Application.mk , entonces ndk-build se compilará para todas las arquitecturas compatibles con su versión de NDK. El último, hasta la fecha r8d, se armeabi armeabi-v7a x86 al armeabi armeabi-v7a x86 también para mips . Cuando se lance otra arquitectura, esperamos que automáticamente se construya el APK para soportarlo.

Cuando la aplicación se instala en un dispositivo Android, el sistema elegirá automáticamente la versión ABI correspondiente e instalará las bibliotecas compartidas correctas desde el APK.

Un inconveniente de este enfoque es que si las bibliotecas nativas son grandes, su archivo APK "monolítico" puede volverse enorme. Puede utilizar el enfoque multi-APK para reducir las descargas de los usuarios. El sitio oficial recomienda: en general, debe usar múltiples APK para admitir diferentes configuraciones de dispositivos solo cuando su APK es demasiado grande (más de 50 MB) . Debería seguir cuidadosamente el código de versión de las líneas de gremio si elige esta ruta.

Desafortunadamente, no hay profecías confiables con respecto al soporte de NDK en Google TV, pero no parece haber ninguna justificación técnica para su indisponibilidad actual. Cuando llegue, tu ndk-build se hará cargo de él automáticamente.

ACTUALIZACIÓN Here hay un proceso simple para mantener la división de APK. Y, por cierto, el nuevo Android TV sí soporta NDK.