2015-12-02 82 views
2

我无法设置我的项目使用Android数据绑定。这是我的build.gradleAndroid数据绑定NoSuchMethodError

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" 
    ... 
} 

当我建,我得到这个错误:

[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

编辑

我已经修改build.gradle

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

但我仍然得到相同的错误。我也有这apt配置:

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

因为我使用AndroidAnnotations。

+0

删除类路径“com.android.databinding:dataBinder:1.0-rc4”。 – yigit

回答

6

您现在应该有1.5.0和没有明确的数据绑定导入设置它:

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

Android的数据绑定1.0发布的安卓插件的gradle的一部分。

+0

我试过这个,但得到相同的错误。看看我的编辑。 –

+0

嗯......你还有'apply plugin:'com.android.databinding'吗?如果是这样,你应该删除它。你可能在root build.gradle中有一个“依赖项”{classpath'com.android.databinding:dataBinder:1.0-rc4'}'。如果不是这样,也许你可以发布一个我可以查看的项目。 –

4

尽管George的答案是正确的,但我认为清楚build.gradle文件中的每一个应该是什么应该是很重要的。

因此,在项目的build.gradle文件中,我们应该有:

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

而且在应用程序的文件的build.gradle应该有:

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> 
    ... 
} 

我们并不需要添加apply plugin: 'com.android.databinding'在该应用程序的build.gradle文件因为如George所说:

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

检查Data Binding Guide了解更多详情。