Proguard混淆不起作用吗?

时间:2016-11-25 20:27:25

标签: android proguard

我在我的项目上运行了proguard,但它并没有混淆我的活动名称。我已经尝试了几条规则并且无法正常工作。我不知道它究竟意味着什么,例如下面的规则:

-keep public class models.* {
  *;
}

之间的区别
-keepclassmembers class * {

}

-keepclasseswithmembers class * {

}

我对这些规则的运作方式有困难。请帮忙。

1 个答案:

答案 0 :(得分:2)

在构建过程中,proguard会检查AndroidManifest并保留所有活动类。这是您的应用运行所必需的。你不应该混淆扩展android.app.Activity的类。

见:

Why Proguard keeps Activity class in Android?

Why proguard processes AndroidManifest.xml

  

什么是... keepclassmembers和... keepclasseswithmembers

之间的区别

根据文件:

<强> -keepclassmembers

  

指定要保留的类成员(如果它们的类是)   保存完好。例如,您可能希望保留所有序列化   实现Serializable的类的字段和方法   接口

<强> -keepclasseswithmembers

  

根据条件指定要保留的类和类成员   所有指定的类成员都存在。例如,你   可能希望保留所有具有主方法的应用程序,而不是   必须明确列出它们。

请参阅:http://proguard.sourceforge.net/manual/usage.html