项目编译报错具体错误如下:

然后突然发现好多类都在报错

以我多年(只有两年^ - ^)的开发经验来看肯定是哪个资源文件导致的。点击build左侧有ab字母的按钮

拖到最底下,上面的错其实不是真正问题原因,如下:
这里我们可以看到错误: 程序包xxx.xxx.databinding不存在可是在我的项目目录里并没有databinding这个包,而是在generatedjava下有一个,这里的代码都是编译时期自动生成的,比如DataBinding;butterknife;dagger。我的问题就出在butterknife上。

错误: 程序包xxx.xxx.databinding这个报错原因其实是butterknife问题导致编译没过,所以DataBinding自动生成的代码也有问题
错误: @OnClick annotation for method contains duplicate ID 2131298051. (com.popupwindow.MainRemoteWindow.onViewClicked)
public void onViewClicked(View view) {
定位到MainRemoteWindow类看下源码
@OnClick({R.id.title, R.id.right_top_btn, R.id.keyboard_clean, R.id.remote_close, R.id.remote_exit
, R.id.remote_change, R.id.remote_voice_down, R.id.remote_voice_up, R.id.remote_center_control_ok,
R.id.remote_center_control_up, R.id.remote_center_control_down, R.id.remote_center_control_left, R.id.remote_center_control_right,
//多余了一行
R.id.remote_center_control_up, R.id.remote_center_control_down, R.id.remote_center_control_left, R.id.remote_center_control_right})
public void onViewClicked(View view) {
}
这下看到问题了,在R文件中第一个多余的R.id.remote_center_control_up的id值的16进制是0x7f090703,换算成10进制刚好就是2131298051,可能是手快了多复制了一行,一个很小的失误浪费的大半天才解决。


这个问题好难发现啊,没有具体的错误日志,还误导我去找是不是少了databinding的包,是不是databinding跟其他包冲突等等;butterknife也没有提示,部门三个人找了半天,最终还是让我拿下了。
总结:遇到类似问题可以参考我的解决办法,看到错的时候不要慌,仔细通过现有的日志去分析产生的原因。
几十几百的错,一般都是布局、资源文件、.9图、包冲突、Studio出BUG等等导致编译没过。
本文详细解析了一个由于ButterKnife注解处理器在处理@OnClick注解时遇到重复ID导致的编译错误。错误表现为找不到DataBinding包,但实际原因是ButterKnife处理上的问题。作者通过检查R文件和源码,定位到了重复ID的问题所在,并分享了解决过程和心得。
2850

被折叠的 条评论
为什么被折叠?



