原来的class名字可以在运行proguard之后找到

Original class name can be found after running proguard

我是 proguard 的新手,我使用 http://www.javadecompilers.com 来验证我的 progurd 设置。

class 名称已被混淆。但是原来的class名字可以在javadecompiler中找到

是否有隐藏原class名字的设置?

java decompiler output

文件: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.** { *; }

之所以能确定原文件名是因为这一行的SourceFile属性:

-keepattributes *Annotation*,SourceFile,LineNumberTable

您可以通过删除它来更改该行为:

-keepattributes *Annotation*,LineNumberTable

或者强制 ProGuard 使用占位符而不是原始文件名:

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