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并没有错误。以下简述问题排查过程,及解决方案
- 分析排查问题,与AndroidStudio以及gradle版本升级无关。
- DataBinding的注册,使用也是正常
- 问题点,在于AndroidStudio转换
java
为kotlin
生成的kotlin
文件,并不是最佳的,甚至可能已经不符合kotlin
的标准规范写法。- 比如,
lateinit
的使用是否恰当合理,有些字段声明,需要显式的初始化 getter()
、setter()
在kotlin
中的重写,是否与已有的字段声明产生了冲突
关键点,注解,@BindingAdapter
、@Autowire
- 比如,