Android Studio现在警告说,这一突破性的变化即将到来。
Resource IDs will be non-final in Android Gradle Plugin version 5.0, avoid using them in switch case statements
唯一的其他选项是if/else吗?
必须使用if/else-per-Google:http://tools.android.com/tips/non-constant-fields.
在常规的Android项目中,资源R类中的常量声明如下:
public static final int main=0x7f030004;
但是,从ADT14开始,在库项目中,它们将被如下声明:
public static int main=0x7f030004;
换句话说,在库项目中,常量不是最终的。原因很简单:当多个库项目组合在一起时,字段的实际值(必须是唯一的(可能会发生冲突。在ADT14之前,所有字段都是最终字段,因此,无论何时使用,所有库都必须将其所有资源和相关的Java代码与主项目一起重新编译。这对性能不利,因为它使构建非常缓慢。它还阻止分发不包含源代码的库项目,限制了库项目的使用范围。
字段不再是最终字段的原因是,这意味着库jar可以编译一次,并在其他项目中直接重用。除了允许分发二进制版本的库项目(在r15中出现(,这使得构建速度更快。