简体   繁体   中英

Android Data Binding NoSuchMethodError

I'm not able to setup my project to use Android Data Binding. This is my build.gradle :

apply plugin: 'com.android.databinding'


buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0-beta2'
        classpath "com.android.databinding:dataBinder:1.0-rc4"
    }
}

android {
    ...
    dataBinding {
        enabled = true
    }

    compileSdkVersion 21
    buildToolsVersion "20.0.0"
    ...
}

When I build, I get this error:

[data binding plugin]: failed to setup data binding

java.lang.NoSuchMethodError: android.databinding.tool.LayoutXmlProcessor.(Ljava/lang/String;Ljava/util/List;Landroid/databinding/tool/writer/JavaFileWriter;IZ)V

EDIT

I have modified build.gradle :

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

But I still get the same error. Also I have this apt config:

apt {
    arguments {
        androidManifestFile variant.outputs[0].processResources.manifestFile
    }
}

Since I'm using AndroidAnnotations.

You should now set it up with 1.5.0 and without the explicit data binding import:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

Android Data Binding 1.0 was released as part of the Android gradle plugin.

Though George's answer is correct I think it's important to make it clear what should be in each one of the build.gradle files.

So, in the project's build.gradle file we should have:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

And in the app's build.gradle file there should be:

apply plugin: 'com.android.application'
// No need to add it as a plugin
// apply plugin: 'com.android.databinding'

android {
    ...
    dataBinding {
        enabled = true
    }

    compileSdkVersion <latest>
    buildToolsVersion <latest>
    ...
}

We don't need to add apply plugin: 'com.android.databinding' in the app's build.gradle file because, as George said:

Android Data Binding 1.0 was released as part of the Android gradle plugin.

Check the Data Binding Guide for more details.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM