proguard是否自动将枚举转换为整数以进行内存优化,或者我必须配置它才能做到这一点?如果我必须配置,配置是什么?
该优化列在ProGuard的优化页面上。这似乎是一个默认的优化,但它(像其他优化)可以显式指定,如果你需要更多的控制(例如禁用所有class/*
优化,除了enum拆箱)。
/enum类/拆箱
尽可能将枚举类型简化为整型常量。
Proguard设置
Proguard需要有如下配置:
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
注意包含了proguard-android-optimize.txt
文件而不是proguard-android.txt
文件。
ProguardEnumIntDefTest是Github上的一个示例项目,它试图找出Proguard是否将枚举转换为int。
优化
对于Proguard优化enum
, enum
不应该有方法和相关的值(字段)。Proguard将这些简单的枚举转换为整型,这样,您就可以在编译时获得枚举的类型安全性,并在运行时获得整型的性能!