I\'m using Databinding with one of my project with project name com.abc.def. I\'ve related all my views with binding like
Acti
first of all, did you changed package name only in Manifest?
note that it could be different to applicationId
- so you can only change it and leave app package as it was.
RCA: probably OS you are using to build is case-insensitive but java compiler is - that's reason why it can't find classes. Bindings are generated alongside other generated classes (for example dagger 2 classes generated by annotation processor), each generator creates own files within folder structure that reflects class package BUT if packages differ only with big/small letters, second generator will use same folder with wrong name. The reason is if OS is case-insensitive it assumes that folder already exist but java compiler not.
Other solution (except leaving app package as it is) is to :
com..Abc.Def.databinding.ActivityLoginBindingImpl .
Check if there is no empty package there, for those ..
I just bumped into the same issue. I was able to fix it by toggling databinding.enabled inside Build.gradle (Module). Below is a little step-by-step guide, that I went through after renaming my company package (com.abc.myapp -> com.xyz.myapp), which got databinding to work as expected:
go to your Build.gradle (Module) and disable databinding:
android {
dataBinding {
enabled = false
}
}
File > Sync Project with Gradle Files
Now enable databinding again:
android {
dataBinding {
enabled = true
}
}
File > Sync Project with Gradle Files
Build > Rebuild Project
Note: Some steps here may be unnecessary, but a little extra sanity checking has never done any harm during project setup, right!?
According to JAVA package naming conventions: The package name may contain uppercase or lowercase letters[a-z], numbers, and underscores [ _ ]. You can not use capital letters in naming packages.