Ich habe http://kn-gloryo.github.io/Build_NDK_AndroidStudio_detail/ gefolgt und es funktioniert gut! Allerdings möchte ich die generierte .so-Bibliothek in einer neuen Android-Anwendung verwenden, und ich weiß einfach nicht, wie ich das machen soll ... Ich habe seit Tagen gekämpft und wenn eine Schritt-für-Schritt-Anleitung geteilt werden kann das wäre hilfreich!Wie wird die generierte .so-Bibliothek in einem anderen Android-Projekt verwendet?
Dies ist das Android-Projekt MeineAnw, die ich die .so-Dateien zu erzeugen, verwendet:
MainActivity:
Java-Klasse: MyNDK
Header-Datei: com_demo_ble_myapp_MyNDK.h
CPP-Datei: MyLibrary
Und das ist die Struktur meiner neuen Android-Projekt useSOLib, kopiere ich einfach alles die so Dateien von MyApp \ app \ src \ main \ libs zu useSoLib \ app \ src \ main \ jniLibs
Und das ist MainActivity in useSoLib:
kann ich Build-> erfolgreich Projekt aktualisieren, aber wenn ich es laufen Auf dem Gerät zeigt die App "Leider hat UseSoLib gestoppt." und zerquetscht. Ich weiß, dass ich hier ein paar Schritte verpasse, aber ich bin neu in Android Studio, also habe ich keine Ahnung, wo ich anfangen sollte ... Vielen Dank im Voraus für irgendwelche Vorschläge! :)
Wahrscheinlich stimmt etwas mit Ihrem systemeigenen Code nicht. Haben Sie versucht, log oder gdb zu verwenden, um zu überprüfen, welche Zeile des Codes die Ausnahme verursacht hat? – yushulx
Danke für die Antwort! Im MainActivity des Projekts MyApp (das ich zum Erzeugen der .so-Bibliothek verwendet habe) habe ich eine Instanz von MyNDK, die so genannte native Funktion getMyString, neu erstellt und sie läuft erfolgreich auf dem Gerät, ich kann auch die korrekte zurückgegebene Zeichenfolge sehen Mein Logcat, also nehme ich an, dass die native C++ Funktion gut funktioniert. Gerade wenn ich versuche auf das generierte zuzugreifen.so Bibliothek von anderen Android-Projekt mit einem anderen Paketnamen, es zerquetscht ... Ich füge auch meine Header-und CPP-Dateien oben als Referenz. – Alison
Ihr Code ist falsch. Siehe meine Antwort. Sie müssen die Java-Klasse exportieren und mit der * .so-Datei in Ihr neues Projekt importieren. – yushulx