运行proguard后可以找到原始类名

时间:2017-07-03 01:08:49

标签: android proguard

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

类名已被混淆。但是原始的类名可以在javadecompiler中找到。

是否有任何隐藏原始班级名称的设置?

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

1 个答案:

答案 0 :(得分:0)

您可以确定原始文件名的原因是由于此行中的ValueError Traceback (most recent call last) <ipython-input-4-7ae8e9cf2346> in <module>() 10 11 dax = da.from_array(ar, chunks=(5,5)) #C ---> 12 dy = da.from_array(y,chunks=(5,5)) #C 13 14 XTX = dax.T.dot(dax) #D C:\Users\F\Anaconda3\lib\site-packages\dask\array\core.py in from_array(x, chunks, name, lock, fancy, getitem) 1868 >>> a = da.from_array(x, chunks=(1000, 1000), lock=True) # doctest: +SKIP 1869 """ -> 1870 chunks = normalize_chunks(chunks, x.shape) 1871 if len(chunks) != len(x.shape): 1872 raise ValueError("Input array has %d dimensions but the supplied " C:\Users\F\Anaconda3\lib\site-packages\dask\array\core.py in normalize_chunks(chunks, shape) 1815 raise ValueError( 1816 "Chunks and shape must be of the same length/dimension. " -> 1817 "Got chunks=%s, shape=%s" % (chunks, shape)) 1818 1819 if shape is not None: ValueError: Chunks and shape must be of the same length/dimension. Got chunks=(5, 5), shape=(5000,) 属性:

SourceFile

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

-keepattributes *Annotation*,SourceFile,LineNumberTable

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

-keepattributes *Annotation*,LineNumberTable