编译报错app:compile_releaseDebugJavaWithJavac

本文详细解析了一个由于ButterKnife注解处理器在处理@OnClick注解时遇到重复ID导致的编译错误。错误表现为找不到DataBinding包,但实际原因是ButterKnife处理上的问题。作者通过检查R文件和源码,定位到了重复ID的问题所在,并分享了解决过程和心得。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

在这里插入图片描述
然后突然发现好多类都在报错
在这里插入图片描述

以我多年(只有两年^ - ^)的开发经验来看肯定是哪个资源文件导致的。点击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等等导致编译没过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值