实现数据绑定后更改包名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现数据绑定后更改包名称相关的知识,希望对你有一定的参考价值。
我正在使用Databinding与项目名称为com.abc.def的项目之一。我已将所有观点与绑定相关联
ActivityLoginBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login);
它工作正常,但如果我将我的包名更改为com.Abc.Def它在构建Apk时生成以下错误。
原因:无法猜测com.Abc.Def.databinding.ActivityLoginBindingImpl。
请注意:
- 我在playstore上有一个com.Abc.Def的旧版本已经在线,我正在更新版本。这就是我必须更改包名称的原因。
- 我无法从整个项目中删除数据绑定。它与所有视图相关。
- 如果我将我的包名改为旧包,它可以正常工作。
我已经尝试过清理,重建和无效缓存并重启。但没有运气。
答案
com..Abc.Def.databinding.ActivityLoginBindingImpl .
那些..
检查那里是否没有空包装
另一答案
根据JAVA包命名约定:包名称可以包含大写或小写字母[a-z],数字和下划线[_]。您不能在命名包中使用大写字母。
另一答案
首先,你是否只在Manifest中更改了包名?请注意,它可能与applicationId
不同 - 因此您只能更改它并保留应用程序包原样。
RCA:你可能用来构建的操作系统是不区分大小写的,但java编译器是 - 这就是它无法找到类的原因。绑定与其他生成的类一起生成(例如,由注释处理器生成的dagger 2类),每个生成器在文件夹结构中创建自己的文件,反映类包BUT,如果包只与大/小字母不同,第二个生成器将使用相同的文件夹错误名称。原因是如果操作系统不区分大小写,则假定该文件夹已存在但java编译器不存在。
其他解决方案(除了保留app包之外)是:
- 将应用程序中的所有软件包重命名为与app软件包不同的其他软件包,或者使用区分大小写的操作系统(macOS可以是格式化程序,也可以是linux)
以上是关于实现数据绑定后更改包名称的主要内容,如果未能解决你的问题,请参考以下文章