J'utilise diverses autres bibliothèques. Mais j'ai ajouté leur configuration proguard à partir de leur documentation de dépôt. Je ne suis pas capable d'obscurcir mon code et sa variable interne en utilisant proguard. Même je ne suis pas capable d'obscurcir les noms de paquets. Je suis toujours en mesure de voir les journaux sur mon logcat android. Mon application fonctionne sans accident. Je suis confus si la minification a été appliquée ou non.Obfuscation ne fonctionne pas avec proguard
Ceci est mon niveau d'application gradle
defaultConfig {
resConfigs "en"
applicationId "com.xxx.xxx"
minSdkVersion 16
targetSdkVersion 25
versionCode 49
multiDexEnabled true
versionName "1.4.2-debug"
}
buildTypes {
debug {
minifyEnabled true
debuggable true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
debuggable true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
dexOptions {
javaMaxHeapSize "4g"
}
Et ceci est mon fichier de règles ProGuard.
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * implements android.os.Parcelable {
static android.os.Parcelable$Creator CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
#################################################################### Fragmenst
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.app.Fragment
#################################################################### Methods
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers class * {
public void *ButtonClicked(android.view.View);
}
#################################################################### Serializables
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[]serialPersistentFields;
!static !transient <fields>;
!private <fields>;
!private <methods>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
#################################################################### KEEP ANDROID SUPPORT V7 AND DESIGN
-dontwarn android.support.design.**
-keep class android.support.design.** { *; }
-keep interface android.support.design.** { *; }
-keep public class android.support.design.R$* { *; }
-keep public class android.support.v7.widget.** { *; }
-keep public class android.support.v7.internal.widget.** { *; }
-keep public class android.support.v7.internal.view.menu.** { *; }
-keep public class * extends android.support.v4.view.ActionProvider {
public <init>(android.content.Context);
}
-keep interface android.support.v4.** { *; }
-keep interface android.support.v7.** { *; }
-keep class android.support.** { *; }
#################################################################### REMOVE WARNINGS
-dontwarn android.support.design.internal.**
-dontwarn com.google.android.gms.**
-dontwarn android.support.v4.**
#################################################################### REMOVE LOGGING
-assumenosideeffects class android.util.Log {
public static *** e(...);
public static *** w(...);
public static *** wtf(...);
public static *** d(...);
public static *** v(...);
public static *** i(...);
}
Je ne comprends toujours pourquoi les méthodes à l'intérieur de ma classe sont se brouillées, mais les classes du modèle et de l'entité ne sont pas? Je n'ai écrit aucune règle pour eux. – saurabhlahoti