2017-02-22 7 views
0

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(...); 
} 

Répondre

2

I am not able to obfuscate my code and its inner variable using proguard:

votre application ne semble pas parce que vos obscurcir les règles de progaurd sont trop larges et ils empêchent la plupart de votre code de se minified et obscurcie. par exemple suivant la ligne:

-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.app.Fragment 
-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 

I am still able to see logs on my android logcat:

vous devez supprimer debuggable true de libération buildType de votre gradle pour éviter de consulter des journaux en logcat.

+0

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

0

j'avais la ligne

-dontobfuscate 

dans mon fichier proguard qui bloquait l'obscurcissement