我读了这个answer并且不知道为什么我应该保留我的服务,活动和自定义视图的名称。但是我应该保留从android.support.v4.app.Fragment派生的类吗?
我还看了一下defualt Proguard配置文件%SDK_DIR%\sdk\tools\proguard\proguard-android.txt
,并且没有关于片段的规则。
答案 0 :(得分:8)
您需要保留class
的主要原因是因为它是通过反射访问的。
Fragments
通常无法通过反思访问,因此您不必保留。
如果您直接在布局文件中引用它们,则除外(因为解析布局文件使用反射)。
答案 1 :(得分:1)
正如其他人已经指出的那样,保持像Fragments这样的UI元素不被混淆的主要原因是因为它们是从ProGuard未处理的其他资源引用的,例如,布局文件。
如果你要使用DexGuard,你也可以混淆Fragments和其他UI类,因为DexGuard会将所有应用程序资源一起处理,允许它在使用它们时修改类名(除非通过反射使用当然)。