Opracowałem aplikację i bibliotekę macierzystą dla systemu Android. Natywna biblioteka używa openSL ES do przetwarzania dźwięku.Łączenie ze zaktualizowaną biblioteką w systemie Android
W moim pliku Android.mk
Mam następujące oświadczenie:
LOCAL_LDLIBS := -lOpenSLES
Więc zgaduję, że oznacza to, że aplikacja będzie dynamicznie połączyć w bibliotece openSLES od systemu/lib folderu urządzenia Pod czas, kiedy aplikacja jest ładowana/wykonywana na urządzeniu?
Problem, przed którym stoję, polega na tym, że biblioteki w urządzeniu są błędne i mam 3 zaktualizowane biblioteki, które zawierają poprawkę. Jeśli to możliwe, w jaki sposób mogę się upewnić, że moja natywna biblioteka korzysta z 3 bibliotek mam:
Libwilhelm.so
libOpenMAXAL.so
libOpenSLES.so
Czy ja po prostu zastąpić
LOCAL_LDLIBS := -lOpenSLES
z
LOCAL_SHARED_LIBRARIES := -lOpenSLES -lOpenMAXAL -lwilhelm
Jak dokładnie mogę się upewnić, że moja aplikacja używa mojej wersji libOpenSLES.so zamiast wersji buggy w systemie/libs? W szczególności, jak powinien wyglądać mój plik Android.mk? – user1884325
Tak, jeśli podasz go w LOCAL_SHARED_LIBRARIES, zostanie on zainstalowany na urządzeniu z plikiem APK. W ostatnich wersjach systemu Android będzie on ładowany automatycznie. W starszych wersjach program ładujący może preferować ładowanie bibliotek z katalogu systemowego, dzięki czemu można użyć jawnego System.loadLibrary() lub dlopen(). –
Kiedy mówisz, że starszym mówimy o pre-4.4.2? A przez "załadowany automatycznie" masz na myśli, że moja lokalna udostępniona lib zostanie załadowana automatycznie? Jak zweryfikować, skąd faktycznie załadowana jest biblioteka podczas uruchamiania aplikacji na urządzeniu? – user1884325