我在我的项目上运行了proguard,但它并没有混淆我的活动名称。我已经尝试了几条规则并且无法正常工作。我不知道它究竟意味着什么,例如下面的规则:
-keep public class models.* {
*;
}
和
之间的区别-keepclassmembers class * {
}
和
-keepclasseswithmembers class * {
}
我对这些规则的运作方式有困难。请帮忙。
答案 0 :(得分:2)
在构建过程中,proguard会检查AndroidManifest并保留所有活动类。这是您的应用运行所必需的。你不应该混淆扩展android.app.Activity的类。
见:
Why Proguard keeps Activity class in Android?
Why proguard processes AndroidManifest.xml
什么是... keepclassmembers和... keepclasseswithmembers
之间的区别
根据文件:
<强> -keepclassmembers 强>
指定要保留的类成员(如果它们的类是) 保存完好。例如,您可能希望保留所有序列化 实现Serializable的类的字段和方法 接口
<强> -keepclasseswithmembers 强>
根据条件指定要保留的类和类成员 所有指定的类成员都存在。例如,你 可能希望保留所有具有主方法的应用程序,而不是 必须明确列出它们。