Ich benutze Samsung's Motion library, um einen Schrittzähler für Samsung-Handys zu erstellen. Wenn ich ein APK ohne Verkleinerung in der Gradle-Konfigurationsdatei erstelle, funktioniert das System. Jedoch wenn ich versuche, minification anzuwenden, bevor in den Laden LoslassenAndroid: Verkleinerung verschleiern dynamisch zugegriffen Klassen
buildTypes {
release {
minifyEnabled true
signingConfig signingConfigs.config
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debuggable false
jniDebuggable false
}
bekam ich Fehler behaupten, die einige Bibliotheken (z android.hardware.motion
) nicht vorhanden ist. Ich habe überprüft und:
- android.hardware.motion ist kein Standard-Bibliothek (? Wahrscheinlich nur in Samsung Handys vorhanden) in android.hardware
- diese Klassen sind dynamisch Zugriffe (? Vielleicht, weil nicht Standard), z.B.
Class.forName("android.hardware.scontext.SContextManager");
Wenn ich die Linie minifyEnabled wahr entferne ich keine Fehlermeldung anzeigt, so muss der Code-Verschleierung sein.
habe ich versucht, meine proguard Regeln Datei Aussagen wie
-keep class android.hardware.** { *; }
-keep class com.samsung.android.sdk.** { *; }
aber das scheint hinzufügen nicht zu funktionieren. Irgendeine Idee? Vielen Dank!
Haben Sie versucht, proguard zu deaktivieren und Freigabe .apk zu überprüfen? –
I eingefügt: '-dontoptimize -dontshrink -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose' aber es hat – FabioC
nicht helfen Wenn Sie gradle verwenden (das empfohlen wird), die Sie gerade Linie entfernen müssen, beginnend mit' proguardFiles' ('android.buildTypes.release' Abschnitt). –