2016-11-25 108 views
0

我在我的项目上运行了proguard,但它不会混淆我的活动名称。我已经尝试了几个规则,它不工作。我不知道到底是什么意思,例如下面的规则:Proguard混淆不适用于活动?

-keep public class models.* { 
    *; 
} 

和最新

-keepclassmembers class * { 

}

-keepclasseswithmembers class * { 

} 

我对有困难的区别这些规则如何工作。请帮忙。

+0

据我所知,ProGuard的可以在Java代码中(而不是在XML)唯一的工作,因此,如果他们混淆了活动的名称,它会乱用清单。所以也许android插件会自动添加一些规则,以免弄脏声明的东西,这是我们开发人员不应该搞砸的。所有这些只是假设和推论,而不是实际的知情答案。 – Budius

回答

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