在构建我的应用程序的发布版本时,我应该保留android.support.v4.app.Fragment及其派生类吗?

时间:2016-05-28 16:01:41

标签: android proguard obfuscation

我读了这个answer并且不知道为什么我应该保留我的服务,活动和自定义视图的名称。但是我应该保留从android.support.v4.app.Fragment派生的类吗?

我还看了一下defualt Proguard配置文件%SDK_DIR%\sdk\tools\proguard\proguard-android.txt,并且没有关于片段的规则。

2 个答案:

答案 0 :(得分:8)

您需要保留class的主要原因是因为它是通过反射访问的。

Fragments通常无法通过反思访问,因此您不必保留

如果您直接在布局文件中引用它们,则除外(因为解析布局文件使用反射)。

答案 1 :(得分:1)

正如其他人已经指出的那样,保持像Fragments这样的UI元素不被混淆的主要原因是因为它们是从ProGuard未处理的其他资源引用的,例如,布局文件。

如果你要使用DexGuard,你也可以混淆Fragments和其他UI类,因为DexGuard会将所有应用程序资源一起处理,允许它在使用它们时修改类名(除非通过反射使用当然)。