proguard 是将所有枚举转换为 int 还是需要为此进行配置

2022-09-03 06:04:43

proguard 是否会自动将枚举转换为整数以进行内存优化,或者我必须对其进行配置才能执行此操作?如果我必须配置,配置是什么?


答案 1

优化在 ProGuard 的优化页面上列出。它似乎是默认优化之一,但是如果您需要更多控制(例如,禁用除枚举取消装箱之外的所有优化),则可以显式指定它(与其他优化一样)。class/*

类/取消装箱/枚举

尽可能将枚举类型简化为整数常量。


答案 2

护卫设置

Proguard 需要具有以下配置:

minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

请注意包含文件而不是文件。proguard-android-optimize.txtproguard-android.txt

ProguardEnumIntDefTest是Github上的一个示例项目,它试图找出Proguard是否将枚举转换为ints。


优化

对于 Proguard 来优化 一个 ,它不应该有方法和关联的值(字段)。Proguard 将这些简单的枚举转换为 ints,因此您可以在编译时获得枚举的类型安全性,并在运行时获得 ints 的性能!enumenum