2015-12-02 64 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瞭解更多詳情。