Vinculación con la biblioteca actualizada en Android

He desarrollado una aplicación y una biblioteca nativa para Android. La biblioteca nativa utiliza openSL ES para el procesamiento de audio.

En mi archivo de Android.mk tengo la siguiente declaración:

 LOCAL_LDLIBS := -lOpenSLES 

Por lo tanto, supongo que esto significa que la aplicación enlazará dinámicamente en la biblioteca openSLES desde la carpeta system / lib del dispositivo en el momento en que la aplicación se cargue o ejecute en el dispositivo .

El problema que estoy enfrentando es que las bibliotecas en el dispositivo son buggy y tengo 3 bibliotecas actualizadas que contienen la corrección de errores. Si es posible, ¿cómo puedo asegurarme de que mi biblioteca nativa esté utilizando las 3 librerías que tengo:

 Libwilhelm.so libOpenMAXAL.so libOpenSLES.so 

¿Acabo de reemplazar

 LOCAL_LDLIBS := -lOpenSLES 

con

 LOCAL_SHARED_LIBRARIES := -lOpenSLES -lOpenMAXAL -lwilhelm 

Siempre que oriente un dispositivo específico o un conjunto muy limitado de dispositivos, la solución propuesta es lo suficientemente buena. Pero si su objetivo es una aplicación pública, que se instalará en diferentes plataformas, incluida la futura versión 'N' de Android y ROM personalizadas, como por ejemplo Samsung, debería tener cuidado con las dependencias del sistema de estas bibliotecas.

Mientras OpenSLES y OpenMAXAL son inocentes (dependen sólo de liblog y libwilhelm), este último requiere más atención.

En cuanto a su Android.mk , libwilhelm depende de liblog libutils libmedia libbiblioteca libstagefright libstagefright_foundation libcutils libgui libdl libeffects y libstagefright_http_support .

Sólo liblog y libdl son "oficiales" (es decir, parte de NDK). Los otros dependen de la plataforma, y ​​sus funciones exportadas pueden ser incompatibles para diferentes dispositivos que ejecutan el mismo nivel de plataforma.

Para estar en el lado seguro, sólo introduciría las correcciones, y seguir usando la versión del sistema de libwilhelm cuando sea posible. Espero que pueda reducir sus dependencias del sistema de esta manera.

  • OpenSL ES en Android con SL_ANDROID_STREAM_VOICE. La entrada de micrófono es extremadamente baja
  • RecorderObject en OpenSL no implementa la interfaz para configurar el volumen o configurarlo en Android
  • Comunicación de voz a una frecuencia de muestreo de 8KHz para todos los dispositivos Android con OpenSL
  • ¿Es posible obtener un búfer de bytes directamente desde un activo de audio en OpenSL ES (para Android)?
  • Tutoriales para OpenSL ES para Android
  • ¿Es necesario liberar un buffer final de un reproductor de audio OpenSL ES?
  • Transmisión de audio MP3 mediante comunicación de socket mediante OpenSL ES en Android
  • ¿Biblioteca de sonido nativa en Android que puede cambiar de tono?
  • Cómo medir la latencia de audio con OpenSL en Android?
  • Android AlertDialog congela la aplicación unos segundos después de mostrarse - la causa parece relacionada con OpenSL
  • Android con Nexus 6 - ¿cómo evitar la disminución de la prioridad de audio de OpenSL en relación con el enfoque de la aplicación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.