Change Package Name after implementation of data binding

前端 未结 4 2253
慢半拍i
慢半拍i 2021-02-20 00:55

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         


        
相关标签:
4条回答
  • 2021-02-20 01:11

    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 :

    • rename all packages in app to other that differ to app package or to use OS that is case-sensitive (macOS could be formatter this way or linux)
    0 讨论(0)
  • 2021-02-20 01:17
    com..Abc.Def.databinding.ActivityLoginBindingImpl .
    

    Check if there is no empty package there, for those ..

    0 讨论(0)
  • 2021-02-20 01:18

    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:


    1. Build > Clean Project
    2. go to your Build.gradle (Module) and disable databinding:

      android { dataBinding { enabled = false } }

    3. File > Sync Project with Gradle Files

    4. Build > Rebuild Project (no surprise: you'll get a ton of error messages)
    5. Now enable databinding again:

      android { dataBinding { enabled = true } }

    6. File > Sync Project with Gradle Files

    7. 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!?

    0 讨论(0)
  • 2021-02-20 01:23

    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.

    0 讨论(0)
提交回复
热议问题