在构建我的应用程序的发布版本时,我应该保留 android.support.v4.app.Fragment 及其派生的 类 吗?
Should I keep android.support.v4.app.Fragment and its derived classes when building a release version of my app?
我读了这个 answer 并且不明白为什么我应该保留我的服务、活动和自定义视图的名称。但是我应该保留我的 类 派生自 android.support.v4.app.Fragment?
我还查看了默认的 Proguard 配置文件 %SDK_DIR%\sdk\tools\proguard\proguard-android.txt
,没有关于片段的规则。
您需要保留 class
的主要原因是因为它是通过反射访问的。
Fragments
通常不会通过反射访问,因此您 不必保留它们。
除非直接在布局文件中引用它们(因为解析布局文件使用反射)。
正如其他人已经指出的那样,保持 UI 元素(如 Fragments)不被混淆的主要原因是因为它们是从 ProGuard 未处理的其他资源引用的,例如布局文件。
如果您要使用 DexGuard,您还可以混淆片段和其他 UI classes,因为 DexGuard 将一起处理所有应用程序资源,允许它在任何地方修改 class 名称使用(当然通过反射使用时除外)。
我读了这个 answer 并且不明白为什么我应该保留我的服务、活动和自定义视图的名称。但是我应该保留我的 类 派生自 android.support.v4.app.Fragment?
我还查看了默认的 Proguard 配置文件 %SDK_DIR%\sdk\tools\proguard\proguard-android.txt
,没有关于片段的规则。
您需要保留 class
的主要原因是因为它是通过反射访问的。
Fragments
通常不会通过反射访问,因此您 不必保留它们。
除非直接在布局文件中引用它们(因为解析布局文件使用反射)。
正如其他人已经指出的那样,保持 UI 元素(如 Fragments)不被混淆的主要原因是因为它们是从 ProGuard 未处理的其他资源引用的,例如布局文件。
如果您要使用 DexGuard,您还可以混淆片段和其他 UI classes,因为 DexGuard 将一起处理所有应用程序资源,允许它在任何地方修改 class 名称使用(当然通过反射使用时除外)。