¿Cómo puedo copiar mis bibliotecas .so en el dispositivo Android?

Para resumir en una línea: No todos mis archivos libs/armeabi/*.so se copian al dispositivo cuando ejecuto mi aplicación. Voy a tratar de explicar.

Estructura del Directorio

Estoy tratando de obtener ffmpeg en Android y por lo tanto tienen la siguiente estructura para el NDK:

 jni ├── Android.mk ├── bambuser_ffmpeg │  ├── Android.mk │  ├── libavcodec.so │  ├── libavcore.so │  ├── libavdevice.so │  ├── libavfilter.so │  ├── libavformat.so │  ├── libavutil.so │  └── libswscale.so └── video ├── Android.mk ├── at_ac_univie_gameclient_video_VideoGLSurfaceView.c ├── at_ac_univie_gameclient_video_VideoGLSurfaceView.h └── at_ac_univie_gameclient_video_VideoGLSurfaceView_GLRenderer.h 

Archivos de Android.mk

El archivo bambuser_ffmpeg dentro de bambuser_ffmpeg dice:

 include $(CLEAR_VARS) LOCAL_MODULE := bambuser-libavcodec LOCAL_SRC_FILES := libavcodec.so include $(PREBUILT_SHARED_LIBRARY) # and so on, for all of the above .so files 

El segundo archivo `Android.mk tiene lo siguiente:

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := ffmpeg LOCAL_STATIC_LIBRARIES := bambuser-libavcodec bambuser-libavcore bambuser-libavdevice bambuser-libavfilter bambuser-libavformat bambuser-libavutil bambuser-libswscale LOCAL_SRC_FILES := at_ac_univie_gameclient_video_VideoGLSurfaceView.c LOCAL_C_INCLUDES := $(LOCAL_PATH)/../bambuser_ffmpeg/ LOCAL_LDLIBS := -L$(LOCAL_PATH)/../bambuser_ffmpeg -lavcodec -lavcore -lavdevice -lavfilter -lavformat -lavutil -lswscale -llog -lz -lGLESv1_CM include $(BUILD_SHARED_LIBRARY) 

Salida

Por lo tanto, cuando ejecuto ./ndk-build , recibo esta salida. Se ve bien, ¿verdad?

 Prebuilt : libavcodec.so <= jni/bambuser_ffmpeg/ Install : libavcodec.so => libs/armeabi/libavcodec.so Prebuilt : libavcore.so <= jni/bambuser_ffmpeg/ Install : libavcore.so => libs/armeabi/libavcore.so Prebuilt : libavdevice.so <= jni/bambuser_ffmpeg/ Install : libavdevice.so => libs/armeabi/libavdevice.so Prebuilt : libavfilter.so <= jni/bambuser_ffmpeg/ Install : libavfilter.so => libs/armeabi/libavfilter.so Prebuilt : libavformat.so <= jni/bambuser_ffmpeg/ Install : libavformat.so => libs/armeabi/libavformat.so Prebuilt : libavutil.so <= jni/bambuser_ffmpeg/ Install : libavutil.so => libs/armeabi/libavutil.so Prebuilt : libswscale.so <= jni/bambuser_ffmpeg/ Install : libswscale.so => libs/armeabi/libswscale.so Install : libffmpeg.so => libs/armeabi/libffmpeg.so 

Problema

Cuando ejecute mi aplicación Android, intentará cargar libffmpeg.so . Por supuesto, mi directorio local libs contiene todas las bibliotecas necesarias, ya que fueron construidas / copiadas antes:

 libs └── armeabi ├── libavcodec.so ├── libavcore.so ├── libavdevice.so ├── libavfilter.so ├── libavformat.so ├── libavutil.so ├── libffmpeg.so └── libswscale.so 

Sin embargo, en el propio dispositivo , sólo hay mi archivo libffmpeg.so . Reside en at.ac.univie.gameclient/lib/libffmpeg.so y se copió allí automáticamente. ¿Dónde están los otros archivos .so y cómo los llevo al dispositivo?

Además, sólo manualmente copiarlos no es mi solución deseada, obviamente.

¿Estás absolutamente seguro de que todas tus bibliotecas están allí antes de cargar la aplicación. Sí vi que escribió que están allí, pero cuando se construye el proyecto jni que elimina todos sus archivos existentes en libs dir. Por lo tanto, actualizar antes de subirlo sólo para comprobar.

  • Cómo convertir char a jstring en JNI?
  • Android MediaRecorder para grabar una superficie (no la cámara)
  • Uso de funciones nativas en Android con OpenCV
  • Android: Uso de JNI desde NativeActivity
  • Android NDK: ¿Cómo limpiar el código nativo después de reiniciar la actividad?
  • Compilar Java para Android nativo en lugar de escribir en C
  • Java.lang.UnsatisfiedLinkError cuando se utiliza con android 5.0
  • JNI operaciones de mapa de bits, para ayudar a evitar OOM cuando se utilizan imágenes grandes
  • Cómo capturar UnsatisifiedLinkError cuando se utiliza biblioteca NDK-construida en una aplicación para Android?
  • Construyendo OpenSSL en Android NDK
  • JNI- java.lang.UnsatisfiedLinkError: Método nativo no encontrado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.