Android Databinding build fail after Gradle plugin update with migration to annotationProcessor

oli.G picture oli.G · Jul 18, 2017 · Viewed 7.8k times · Source
  • To support Instant Run in my version of Android Studio, I needed to upgrade my Gradle plugin from version 2.2.3 to 2.3.3
  • I'm aware I'm supposed to migrate to annoationProcessor and I believe I've followed that guide correctly
  • after doing so, the Android DataBinding code generation fails

The migration guide linked earlier states that all I need is to

  • Make sure you are on the Android Gradle 2.2 plugin or newer
  • Remove the android-apt plugin from your build scripts
  • Change all apt, androidTestApt and testApt dependencies to their new format

This should be all that's needed to successfully build the project. Yet it doesn't build.

Build output

Gradle build finished with 101 error(s) and 23 warning(s) in 12s 481ms

All of the errors follow the same pattern:

  • C:\Users...\FooAdapter.java
    • error: package com.example.app.databinding does not exist
    • error: cannot find symbol class ItemFooBinding

An interesting message can be found in the build console:

Warning:The following options were not recognized by any processor: '[android.databinding.minApi, android.databinding.enableDebugLogs, android.databinding.sdkDir, android.databinding.bindingBuildFolder, android.databinding.enableForTests, android.databinding.modulePackage, android.databinding.generationalFileOutDir, android.databinding.xmlOutDir, android.databinding.artifactType, android.databinding.printEncodedErrors, android.databinding.isTestVariant]'

I would like to point out that...

  • I presume I don't have an error in some XML file, binding expression or a naming issue. The same set of sources and XML build when I switch back to the Git branch with the old gradle plugin version (and all of the other source files up-to-date)
  • I did increase the limit of output build errors as discussed here, although this doesn't seem to be relevant right now, since as you can see, I currently have "only" 101 errors. :)

Additional info

The following diffs show how I've modified my gradle files:

  1. build.gradle DiffChecker link
  2. app/build.gradle DiffChecker link

Also, as a quick overview, here is the list of some of the "more interesting" plugins & libraries used by the project:

  • Kotlin
  • Android DataBinding
  • Realm
  • Retrofit
  • Dagger
  • ButterKnife (I know...)
  • Multidex Support Library

Does anyone have a clue what could be the issue? Any help or idea will be greatly apprecitated!

Answer

kristyna picture kristyna · Jan 16, 2018

I had exactly the same warning. This line in gradle solved the issue:

kapt "com.android.databinding:compiler:3.0.1"

Hopefully, it will help somebody

Update:
3.0.1 is Android Plugin Version.