Erzeugen von .so-Dateien in Android Studio 1.0.2 mit NDK

8

Ich habe daran gearbeitet, eine sehr einfache NDKSample-Anwendung zu erstellen, die nach dem Walk-through-Verfahren erstellt wurde. hier . Mein Problem ist, dass ich Android Studio nicht dazu bringen kann, die .so-Dateien zu generieren, also habe ich keine Bibliotheken.

Ich verstehe, dass der NDK-Support jetzt veraltet ist und es Anfang dieses Jahres eine Alternative geben wird, jedoch scheint mich nichts davon abzuhalten, diese Funktion derzeit zu nutzen. Wenn ich mein Projekt erstelle, bekomme ich folgende Warnung (kein Fehler):

  

WARNUNG [Projekt:: app] Die aktuelle NDK-Unterstützung ist veraltet.   Alternative wird in der Zukunft zur Verfügung gestellt.

Mein Projekt wird erstellt, aber wenn ich die .apk starte, stürzt es (wie erwartet) ab, da es die Bibliotheken / .so-Dateien nicht finden kann. Wir würden erwarten, dass diese beim Bau des Projekts generiert werden, wie im Beispiel, ist das richtig? Hier ist der Fehler:

  

java.lang.UnsatisfiedLinkError:   dalvik.system.PathClassLoader [DexPathList [[zip-Datei   "/data/app/com.example.ndksample-1/base.apk"],nativeLibraryDirectories=[/vendor/lib,   / system / lib]]] konnte "libMyLib.so" nicht finden

Über meine Umgebung

Windows 7, Android Studio 1.0.2, ADB läuft mit Nexus 5 (emulator-5554)

Mein Code

Wie im Beispiel:

Hauptaktivität.java

%Vor%

activity_main.xml

%Vor%

main.c

%Vor%

build.gradle Hinweis: App

%Vor%

local.properties

%Vor%

Meine Fragen, wenn jemand helfen kann:

Letztendlich, wie erzeuge ich die erforderlichen .so Dateien !! ??

Unter Fragen, die bei der Beantwortung der Hauptfrage helfen können:

Mein Verzeichnis-Layout hatte mein jni dir unter App (also NDKSample / app / jni), ist das korrekt? Ich wurde hier angewiesen, die c-Dateien nicht in das Standard-jni-Verzeichnis zu legen. Ich habe das getestet und beim Aufbau des Projekts ist es abgestürzt. Fehler:

* FAILURE: Build ist mit einer Ausnahme fehlgeschlagen.

  • Was ist schiefgelaufen? Die Ausführung ist für Task ': app: compileDebugNdk' fehlgeschlagen.
      

    com.android.ide.common.internal.LoggedErrorException: Fehler beim Ausführen des Befehls:   D: \ Programme \ Android \ Android NDK \ ndk-build.cmd NDK_PROJECT_PATH = null APP_BUILD_SCRIPT = C: \ Benutzer \ Kyle \ AndroidStudioProjekte \ NDKSample \ app \ build \ intermediates \ ndk \ debug \ Android.mk APP_PLATFORM = android-21 NDK_OUT = C: \ Benutzer \ Kyle \ AndroidStudioProjekte \ NDKSample \ app \ build \ intermediates \ ndk \ debug \ obj NDK_LIBS_OUT = C: \ Benutzer \ Kyle \ AndroidStudioProjekte \ NDKSample \ app \ build \ intermediates \ ndk \ debug \ lib APP_ABI = alle   Fehlercode:   1 *

Das Beispiel von Intel oben leitet mich nicht an, eine Android.mk-Datei zu erstellen, das Beispiel nicht und er erzeugt eine funktionierende Anwendung. Ich habe versucht, einen in das jni-Verzeichnis zu setzen, aber es hat nicht geholfen. Soll ich einen erstellen, und wenn ja, wo soll ich ihn hinstellen?

Stimmt das folgende Bild meiner Verzeichnisse?

Jede Hilfe würde sehr geschätzt werden.

Kyle

    
KyleM 05.01.2015, 06:43
quelle

1 Antwort

13

Die aktuelle NDK-Unterstützung in Android Studio ist minimal, daher wurde sie mit 1.0 abgelehnt.

Bei der Verwendung wird eine Android.mk-Datei automatisch generiert und Ihre Quellen werden beim Erstellen Ihres Projekts kompiliert. Momentan scheint die Kompilierung fehlgeschlagen zu sein, aber Sie sollten in der Lage sein, die anfängliche Fehlermeldung von der Gradle Console zu erhalten.

Wenn Sie keine anderen Fehlermeldungen erhalten, vermute ich, dass der Aufruf von ndk-build fehlschlägt, da sich im NDK-Installationspfad ein Leerzeichen befindet ( Android NDK )

Sie können entweder den aktuellen Fehler beheben und mit Ihrem aktuellen Setup fortfahren oder die Standard-NDK-Integration deaktivieren, Android.mk / Application.mk -Dateien erstellen und ndk-build (.cmd) selbst oder von einer Aufgabe:

%Vor%     
ph0b 05.01.2015, 13:00
quelle