Beim Erstellen von nativem Code mit Gradle werden Symbole entfernt

8

In meinem Android-Projekt verwende ich die neuesten Gradle-Build-Tools und habe eine einzige Datei mit nativem C-Code und einigen einfachen Funktionen. Das einzige, was in der C-Datei enthalten ist, ist string.h und jni.h und die Funktionen geben einfach String und Primitive zurück. Die Datei wird neben den anderen Quellordnern (java, res etc.) Im jni-Verzeichnis abgelegt.

Wenn ich die Anwendung erstelle, kompiliere sie den C-Code, erzeugt die .so-Datei und fügt sie in meine APK ein. Das Problem ist, dass die .so-Datei ALLE Symbole entfernt hat.

Bei der Überprüfung der .so-Zwischenablage, die in build / intermediate / ndk / obj abgelegt wurde, sind alle Symbole noch vorhanden. Also irgendwo nach der ersten .so-Datei wird generiert und wenn es verpackt wird, ist alles abgestreift.

Beim Erstellen der .so-Datei mit der Befehlszeile ndk-build funktioniert alles gut und die Symbole sind enthalten.

Ist es ein Fehler im Android Gradle Plugin (ich benutze das neueste!) oder fehle ich etwas?

    
Erik Hellman 21.07.2014, 18:55
quelle

2 Antworten

1

Die Symbole befinden sich in src / main / obj / local Fügen Sie also build.grade hinzu:

%Vor%

gehen Sie dann zu Debug Konfiguration- & gt; Debugger und Hinzufügen zu Symbol-Verzeichnissen: app / build / intermediates / jniLibs

danach konnte ich meinen nativen Code debuggen.

    
VitalyD 02.05.2016 11:38
quelle
0

Stellen Sie sicher, dass Sie JNIEXPORT und JNICALL Makros in Ihren Methoden verwenden. Stellen Sie außerdem sicher, dass proguard nicht zuerst eine Klasse entfernt, die nur jni stuff aufruft - und später den jni-Code selbst, weil keine Klasse ihn verwendet.

Ссылка

Beispiel für JNIEXPORT UND JNICALL

%Vor%     
Martin Gerhardy 25.07.2015 05:53
quelle