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:
- Cómo convertir voz humana a nota musical en Android?
- attachAuxEffect y OpenSL ES
- Precisamente Sync Looped Audio con animación en Android
- ¿Qué es SLDataLocator_AndroidSimpleBufferQueue (Android 4.3)?
- Android 2.3.4, OpenSL ES y enorme log-spam por razones desconocidas
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
- ¿Cuáles deberían ser las razones para usar OpenSL ES en lugar de AudioTrack en Android?
- Alternativa de OpenSL ES en Android
- reproducir un archivo MP3 android NDK utilizando openSL desde la memoria
- Descodificador AES OpenSL ES de Android
- Control del volumen de audio forzado a altavoz
- ¿Es posible tener acceso a la señal del altavoz en Android?
- Reproducción de audio de baja latencia en Android
- Redirigir audio / crear rutas de sonido alternativas en Android
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.
- ¿Cómo se ocultan varias vistas al mismo tiempo?
- ¿Cuál es la diferencia entre @UiThread y @MainThread anotación en Android?