Ho sviluppato un'applicazione e una libreria nativa per Android. La libreria nativa utilizza openSL ES per l'elaborazione audio.Collegamento con libreria aggiornata su Android
Nel mio file Android.mk
Ho la seguente dichiarazione:
LOCAL_LDLIBS := -lOpenSLES
Quindi immagino che questo significa che l'applicazione si collegherà in modo dinamico nella biblioteca openSLES dalla cartella di sistema/lib in del dispositivo momento in cui l'applicazione viene caricata/eseguita sul dispositivo?
Il problema che sto affrontando è che le librerie sul dispositivo sono buggate e ho 3 librerie aggiornate che contengono la correzione del bug. Se possibile, come faccio a fare in modo che la mia libreria nativa sta usando le 3 librerie che ho:
Libwilhelm.so
libOpenMAXAL.so
libOpenSLES.so
Posso solo sostituire
LOCAL_LDLIBS := -lOpenSLES
con
LOCAL_SHARED_LIBRARIES := -lOpenSLES -lOpenMAXAL -lwilhelm
Quindi, in che modo posso accertarmi che la mia app stia utilizzando la mia versione di libOpenSLES.so invece della versione buggy in system/libs? In particolare, come dovrebbe apparire il mio file Android.mk? – user1884325
Sì, se lo specifichi in LOCAL_SHARED_LIBRARIES verrà installato sul dispositivo con il tuo APK. Nelle ultime versioni di Android, verrà caricato automaticamente. Nelle versioni precedenti, il caricatore può preferire caricare librerie libs dalla directory di sistema, quindi è possibile utilizzare esplicitamente System.loadLibrary() o dlopen(). –
Quando dici più vecchio parliamo di pre-4.4.2? E con "caricato automaticamente" intendi che la mia libreria condivisa locale verrà caricata automaticamente? Come posso verificare dove viene effettivamente caricata la lib da quando l'applicazione viene avviata su un dispositivo? – user1884325