Ich habe eine Anwendung und eine native Bibliothek für Android entwickelt. Die native Bibliothek verwendet openSL ES für die Audioverarbeitung.Verknüpfung mit aktualisierten Bibliothek auf Android
In meiner Android.mk
Datei habe ich die folgende Erklärung ab:
LOCAL_LDLIBS := -lOpenSLES
Damit Ich vermute, dies bedeutet, dass die Anwendung dynamisch in der openSLES Bibliothek verbinden wird aus dem System/lib Ordner bei der die Vorrichtung Zeitpunkt, zu dem die Anwendung auf dem Gerät geladen/ausgeführt wird?
Das Problem, mit dem ich konfrontiert bin, ist, dass die Bibliotheken auf dem Gerät fehlerhaft sind und ich 3 aktualisierte Bibliotheken habe, die den Bugfix enthalten. Wenn möglich, wie kann ich sicherstellen, dass meine Mutter Bibliothek die drei Bibliotheken verwendet habe ich:
Libwilhelm.so
libOpenMAXAL.so
libOpenSLES.so
Sie nur
ich ersetzenLOCAL_LDLIBS := -lOpenSLES
mit
LOCAL_SHARED_LIBRARIES := -lOpenSLES -lOpenMAXAL -lwilhelm
Wie also stelle ich sicher, dass meine App meine Version von libOpenSLES.so statt der Buggy-Version in system/libs verwendet? Wie sollte meine Android.mk-Datei aussehen? – user1884325
Ja, wenn Sie es in LOCAL_SHARED_LIBRARIES angeben, wird es auf dem Gerät mit Ihrem APK installiert. In den letzten Android-Versionen wird es automatisch geladen. Bei älteren Versionen lädt der Loader möglicherweise libs aus dem Systemverzeichnis, sodass Sie explizite System.loadLibrary() oder dlopen() verwenden können. –
Wenn Sie älter sagen, sprechen wir über Pre-4.4.2? Und mit "loaded automatically" meinen Sie, dass meine lokale shared lib automatisch geladen wird? Wie kann ich überprüfen, wo die lib tatsächlich geladen ist, wenn die Anwendung auf einem Gerät gestartet wird? – user1884325