Resource IDs will be non-final in Android Gradle Plugin version 5.0 警告原因分析及解决办法

 

一. R.java文件变迁

 
其实ADT14前, R文件字段还是:

public static final int value=0x2de8572d8;

ADT14之后,R文件字段变成:

public static int value=0x2de8572d8;

那么问题来呢,为什么有这个变化?

其实ADT14之前字段为final的,如果library合并到主项目(R字段是unique),就可能在buid的时候出现字段冲突,为了避这种冲突,所以在每次使用library的时候都要重新编译.但是这样做的话,build项目就会很慢,于是为了build效率,所以就在ADT14(SDK r15)以后, R文件取消了字段的final, 这样的话,build的速度就快了.

 

二. Switch条件判断

 

在这里插入图片描述

 
switdh条件判断会遇到这个警告:

在这里插入图片描述

原因: switch要求所有的判断条件在编译的时候都是常量,这样的话可以把值直接复制粘贴到*.class文件,为了避免这个警告,官方建议换成if-else:

如下图:

在这里插入图片描述

 

三. Butterknife

 
题外话,刚觉得学下Butterknife这个方便的注解三方库,平时就findviewbyid用下来,然后发现官方弃用了,推荐用view binding.


在这里插入图片描述

而且如果用的话,现在Android studio也会报这个warnning :



在这里插入图片描述

在这里插入图片描述

因为生成的R.java文件的字段不是final的,而Butterknife的@BindView() 注解需要的是final.

 
那么如何解决Butterknife的这个警告呢?


  1. (首选) 迁移到View binding,
  2. (官方答案)用R2代替R

Butterknife官方团队的Readme :

在这里插入图片描述
其实我用了R2来取代R, warning仍然存在,有大佬能解答下吗?

等待官方回答中...

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值