在Android Gradle插件版本5.0中,资源ID将是非最终的,请避免在switch case语句中使用它们



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中出现(,这使得构建速度更快

最新更新