我正在使用Databinding与项目名称为com.abc.def的项目之一。我已将所有观点与绑定相关联
ActivityLoginBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login);
它工作正常,但如果我将我的包名更改为com.Abc.Def它在构建Apk时生成以下错误。
原因:无法猜测com.Abc.Def.databinding.ActivityLoginBindingImpl。
请注意:
我已经尝试过清理,重建和无效缓存并重启。但没有运气。
com..Abc.Def.databinding.ActivityLoginBindingImpl .
那些..
检查那里是否没有空包装
根据JAVA包命名约定:包名称可以包含大写或小写字母[a-z],数字和下划线[_]。您不能在命名包中使用大写字母。
首先,你是否只在Manifest中更改了包名?请注意,它可能与applicationId
不同 - 因此您只能更改它并保留应用程序包原样。
RCA:你可能用来构建的操作系统是不区分大小写的,但java编译器是 - 这就是它无法找到类的原因。绑定与其他生成的类一起生成(例如,由注释处理器生成的dagger 2类),每个生成器在文件夹结构中创建自己的文件,反映类包BUT,如果包只与大/小字母不同,第二个生成器将使用相同的文件夹错误名称。原因是如果操作系统不区分大小写,则假定该文件夹已存在但java编译器不存在。
其他解决方案(除了保留app包之外)是: