Proguard什么时候可以优化枚举?

时间:2017-11-20 10:59:48

标签: proguard android-proguard

https://www.guardsquare.com/en/proguard/manual/optimizations

  

类/拆箱/枚举

     

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

但显而易见的问题是,什么时候可能?我假设枚举不能有字段/方法?它是否仅适用于局部变量或方法参数?

特别是,如果我有一个字段和一个字段的getter,我可以将它转换为一个静态方法切换枚举;这会启用优化吗?

1 个答案:

答案 0 :(得分:0)

优化

您的假设是正确的,为了使Proguard优化enumenum不应具有方法和关联的值(字段)。 Proguard将这些简单的枚举转换为int,因此,您可以在编译时获得枚举的类型安全性,并在运行时获得int的性能。

它既适用于变量也适用于方法参数。

因此,对于您在enum中有一个字段的情况,该优化将不适用。

Jake Wharton曾在Android团队和others工作,在此Reddit post中讨论了枚举优化。


Proguard设置

Proguard设置应如下所示:

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

请注意,其中包含proguard-android-optimize.txt文件,而不包含proguard-android.txt文件。

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