ButterKnife R2作用和删除

在使用ButterKnife时library工程的注解会使用R2, 为什么使用R2而不是R呢?
R2.class
R.class
如上图所示R.class中参数定义使用了final关键字, 即R.class里全部是常量; 而R2.class里全部是变量。
PS:Java语言在编译时常量内联, 即使用常量值替换参数;
Java 注解的属性和 switch-case 中的 case 表达式,必须使用常量或者值,否则会报语法错误。

@BindView(2131492938)
ImageView mBtnClose;
@BindView(2131493454)
TextView mTvHint;
@BindView(2131493452)

为什么Libraray中编译生成的R.class不是常量呢? 详见https://developer.android.com/studio/write/add-resources.html
为了避免library生成的值跟主工程重复, 编译时为library资源生成全局唯一的值。

ButterKnife利用 butterknife-gradle-plugin 拷贝一份 R.java 命名成 R2.java(参数名称/值完全相同,唯一区别是添加final关键字),即R2.java 里面的参数都是常量。这样就躲过了语法检查, li

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值