una saber publicidad programar programa plataformas para ibuildapp gratis fabrica desinstalar desde crear como cero apps app aplicaciones android android-ndk jni android-shell

saber - Usar un binario nativo precompilado en la aplicación de Android



plataformas para crear apps (1)

esta pregunta se ha planteado en diferentes lugares, pero ninguno parece dar una explicación simple y detallada de lo que se requiere.

Hasta ahora he construido un ffmpeg binario nativo para ser utilizado en Android, la compilación está bien.

Puse el binario en mi directorio project / lib / armeabi-v7a / y lo renombré a libffmpeg.so para que pueda ser recogido por el sistema de embalaje, como se aconseja en otras publicaciones.

Ahora el problema es que libffmpeg.so o ffmpeg requiere algunas otras bibliotecas que normalmente están en su propio directorio lib (ffmpeg). cuando lo ejecuto con Runtime.getRuntime (). exec (comando), llama a esas otras bibliotecas que no están en el lugar correcto o que no han sido recogidas en absoluto por el sistema de empaque de Android.

así que copié todas las bibliotecas que requiere ffmpeg en el mismo / lib / armeabi-v7a / pero todavía no tuve éxito.

Al buscar en Stackoverflow, encuentro publicaciones sobre el uso de jni approach y otras dicen que pueden hacerlo sin jni. ¿Cuál es la forma más simple de usar un binario preconstruido que requiere otras bibliotecas en Android?

Luego está también la cuestión de los archivos Android.mk y Application.mk, cuando se necesitan, es solo cuando uno está tratando de construir código C / C ++ nativo en android o también se debe usar cuando las bibliotecas y los binarios precompilados estan involucrados. Y también, si los necesito para este caso, ¿dónde deberían colocarse estos archivos en el proyecto?

Soy muy nuevo en Android. Sé claro y conciente, gracias por compartir algo de tu sabiduría.


Puedo darte algunos enlaces:

Cómo usar un archivo de biblioteca C / C ++ externo mientras trabaja con JNI
incluir el archivo .h en el archivo java en Android utilizando jni como carpeta de origen del archivo .h?
bibliotecas nativas múltiples (mi y de terceros) en Android NDK
Android NDK: crea dos bibliotecas compartidas nativas llamándose entre sí

Antes que nada, ¿cómo quieres llamar al código nativo?

Tienes 2 opciones:

1) Llamar funciones de la biblioteca a través de un contenedor: una clase que define un conjunto de funciones nativas. Tendrá que convertir estructuras de datos entre la representación de Java y la representación de C. Un objeto Java se asigna a un tipo muy específico de estructura de datos C, y normalmente no se puede acceder a las estructuras C desde Java. Por lo tanto, para cada función invocada de C / C ++ existe un contenedor que implementa una función nativa de Java.

2) Puede invocar un comando de shell. Android es Linux y puedes comunicarte a través de adb shell . Puede pasar argumentos de línea de comandos, escribir / leer a / desde stdin / stdout del proceso iniciado. También puede pasar datos a / desde el proceso iniciado a través del sistema de archivos. Por ejemplo, esta es la forma de usar su en un dispositivo rooteado: ejecutar el comando de shell desde Android