2016-07-20 14 views
3

In meinem aktuellen Code bis android 6 (API-23) zu verwenden, ich in der Lage war dlopen() Funktion zu öffnen libjavacore.so libcrypto.so und libwebviewchromium.so verwenden. aber in Android N Zugriff der privaten Bibliothek sind von Google eingeschränkt. Jeder kann mir helfen, diese Bibliotheken zu laden. Your app directly accesses private platform libraries. You should update your app to include its own copy of those libraries or use the public NDK APIs.Android N: Wie Systembibliothek

Wie erstellt man eine Kopie dieser Bibliothek?

+0

Überprüfen Sie meine Antwort hier zum Hinzufügen '* .so Bibliotheken', http://StackOverflow.com/a/33164947/3626214 – Aspicas

+0

Aber diese Bibliotheken sind bereits Teil des Systems/lib – vinit

+0

Was meinst du genau? – Aspicas

Antwort

0

Scheint wie es gibt keine Möglichkeit, es zu umgehen. Im Allgemeinen sollten Sie Ihren eigenen dynamischen Linker schreiben, der die benötigten Bibliotheken lädt (oder von NDK aus auf crazy_linker schauen). Dann sollten Sie die Symbolsuche manuell durchführen. Wenn die Bibliothek bereits vom System geladen ist, benötigen Sie nur die letztere.

Wie auch immer, ein solcher Ansatz ist fragil und garantiert nicht, dass solche Tricks in Zukunft nicht deaktiviert werden. Besser ist es, die Verwendung von privaten Bibliotheken zu vermeiden und stattdessen eigene Versionen oder die öffentliche NDK-API zu verwenden.