我希望 proguard 混淆类名。我在 Proguard.cfg 中有这一行
-keepclasseswithmembers class * {
public static <fields>;
}
-keepnames class * implements java.io.Serializable
-keep public class com.google.**
我注意到没有混淆的是类名。所以运行 jdgui 我看到 com/test/abcd/ActualClass.java public class ActualClassName extends Activity 等
此外,我看到返回真实类名的方法。喜欢
ActualClassname aa();
并导入语句,如
import com.abcd.ActualClassName
如何让 Proguard 混淆类名本身。我看到的不仅仅是活动,我的适配器没有被混淆。好吧,有混淆,但没有类名。
上面的规则是否可以防止类名被混淆?
更新:我已经删除了上面的规则,并且没有从 Android 扩展任何东西的实用程序类没有被混淆。我现在想知道是否有一些关于保留类的类名的隐含规则,这些类的类名是从像 Activity 派生类一样保留的类中引用的?名称未被混淆的类有一些共同点:
1) 静态方法 2) 导入其他类型,这些类型与从活动派生或可序列化的类型一样。3) 它们具有带有其他类参数的方法(其中一些可能需要保留)。
但是,我没有特别要求保留这些实用程序类的地方。