Duplicate class found in the file ActivityLoginBinding && 找不到符号 DataBindingComponents

在使用Kotlin、DataBinding和ARouter的项目中遇到Duplicate class错误及找不到DataBindingComponents符号的问题。问题源于Android Studio升级和代码转换。排查发现布局文件无误,DataBinding注册和使用正常。问题在于转换生成的文件可能不符合标准,特别是注解在不同上下文中的应用。解决办法包括检查注解、字段初始化和重写,以及在特定情况下需要额外的注解来确保框架正确识别。此外,手动编写代码可能比自动转换更可靠。
摘要由CSDN通过智能技术生成

Duplicate class found in the file ActivityLoginBinding && 找不到符号 DataBindingComponents

一、问题描述

最近在项目开发中,使用kotlin开发,同时使用模块化、组件化的架构设计,采用ARouter作为路由框架,MVVM的软件分层结构,其中就用到DataBinding。然而,问题也就从这里开始……

起初,并不怎么会写kotlin代码,先简单的写出java文件,然后使用AndroidStudio的转换工具,生成kotin,由于同时引入了较多的新技术,如Jetpack等。所以好多代码还是java实现的。项目中就出现了java与kotin共存的代码。然后随着kotlin的熟悉,开始全面使用kotlin实现业务,同时也将原有的java代码进行重构。坑就是这么来的。

  • Duplicate class found in the file&&找不到符号 DataBindingComponents

由于项目已经解决问题,忘记了截图,所以此处就不配图了。也因为是在升级AndroidStudio为最新的3.3版本才引发这个问题,所以最初的思路都是围绕AS版本,以及gradle版本的问题来排查。

而报错DataBinding,同时也有ARouter的错误提示can not be private !!!之类的,当时忽略,主要精力去看了DataBinding的处理。

二、问题排查

可以确定的是layout并没有错误。以下简述问题排查过程,及解决方案

  1. 分析排查问题,与AndroidStudio以及gradle版本升级无关。
  2. DataBinding的注册,使用也是正常
  3. 问题点,在于AndroidStudio转换javakotlin生成的kotlin文件,并不是最佳的,甚至可能已经不符合kotlin的标准规范写法。
    • 比如,lateinit的使用是否恰当合理,有些字段声明,需要显式的初始化
    • getter()setter()kotlin中的重写,是否与已有的字段声明产生了冲突
      关键点,注解,@BindingAdapter@Autowire
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值