2017-07-03 5 views
0

Je suis nouveau dans proguard et j'utilise http://www.javadecompilers.com pour vérifier mon paramètre progurd.Le nom de la classe d'origine peut être trouvé après l'exécution proguard

Le nom de la classe a été obfusqué. Mais le nom de la classe d'origine peut être trouvé dans javadecompiler.

Y a-t-il un paramètre pour masquer le nom de la classe d'origine?

java decompiler output

fichier: proguard-project.txt

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
#-dontskipnonpubliclibraryclassmembers 
-dontpreverify 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

#-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.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class * extends android.util.Log 

-keepclasseswithmembernames class * { 
native <methods>; 
} 

-keepclasseswithmembers class * { 
public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * extends android.app.Activity { 
public void *(android.view.View); 
} 

-keepclassmembers enum * { 
public static **[] values(); 
public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
public static final android.os.Parcelable$Creator *; 
} 

-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep class com.actionbarsherlock.** { *; } 
-keep interface com.actionbarsherlock.** { *; } 

-keepattributes *Annotation*,SourceFile,LineNumberTable 

# goolge map 
-keep class android.location.** { *; } 

-keepnames class com.google.android.maps.** {*;} 
-keep public class com.google.android.maps.** {*;} 

-dontwarn com.google.android.maps.GeoPoint 
-dontwarn com.google.android.maps.MapActivity 
-dontwarn com.google.android.maps.MapView 
-dontwarn com.google.android.maps.MapController 
-dontwarn com.google.android.maps.Overlay 
-dontwarn com.google.** 

-keep class com.google.** { *; } 
-keep interface com.google.** { *; } 

Répondre

0

La raison pour laquelle vous pouvez déterminer le nom du fichier d'origine est due à l'attribut SourceFile dans cette ligne:

-keepattributes *Annotation*,SourceFile,LineNumberTable 

Vous pouvez changer ce comportement en le supprimant:

-keepattributes *Annotation*,LineNumberTable 

ou en forçant ProGuard à utiliser un espace réservé à la place du nom du fichier d'origine:

-keepattributes *Annotation*,SourceFile,LineNumberTable 
-renamesourcefileattribute SourceFile