2016-05-30 7 views
0

Ich hatte ein Projekt funktioniert gut mit dem normalen Gradle mit zwei separaten gemeinsamen Bibliotheken. Ich war auch die Bibliotheken mit den folgenden gradle Befehle:Wie füge ich eine vorkompilierte, gemeinsam genutzte Bibliothek zu einem vorhandenen NDK-Projekt hinzu?

sourceSets.main 
     { 
      jni.srcDirs = []// This means that ndk-build.cmd needs to be invoked from command line 
      jniLibs.srcDirs "src/main/libs" //include other libraries 
     } 

Ich brauchte eine der beiden Bibliotheken beginnen kompilieren, so zog ich nach experimentellen gradle. Ich habe das für die Bibliothek, die ich baue, gut funktionieren. Aber wenn ich die vorkompilierte shared library hinzufüge, bekomme ich einen Absturz für java.lang.UnsatisfiedLinkError: Keine Implementierung für meine JNI-Methode gefunden. Ich habe den Paketnamen oder die gemeinsam genutzte Bibliothek nicht geändert.

Wenn ich laufe

jar xvf app-release.apk 

ich meine gemeinsam benutzte Bibliothek in der Liste der Dateien zu sehen, so dass es von der APK abgeholt wird bauen. Was könnte die Quelle des UnbefriedigtenLinkError sein, wenn die Bibliothek in der APK ist? Wie fügen Sie eine vordefinierte .so-Datei in ein NDK-Projekt ein? Der NDK-Projektcode ruft nicht die zusätzliche Bibliothek auf, sondern nur den Java-Code.

Antwort

0

Sie sollten Ihre Bibliothek manuell aus Java-Code laden.

System.loadLibrary("yourlib"); 

Vergessen Sie nicht, um Ausnahmen zu behandeln, als loadLibrary einer werfen. Es ist wichtig, weil eine Ausnahmebedingungsnachricht Ihnen die Pfade anzeigen würde, in denen es versucht hat, Ihre gemeinsam genutzte Bibliothek zu finden. Achte auch darauf, dass deine Bibliothek zu deiner apk hinzugefügt wurde. Stellen Sie sicher, dass Sie Ihre gemeinsam genutzte Bibliothek für verschiedene ABI kompiliert haben, da die Armeeabi-Bibliothek nicht auf einem x86-Telefon funktioniert.

Here können Sie ein Beispiel zum Hinzufügen von Bibliothek zu Ihrem Projekt mit Gradle-Experimental-Plugin finden, so würde es zu Ihrem apk hinzugefügt werden.

Verwandte Themen