Edited at

【Android】DataBindingのGradleの設定が変わった

More than 3 years have passed since last update.

年が明けてから新しくDataBindingを使用するプロジェクトを作成しようとしたら、ビルドが通らなかったので、調べた解決策を記載します。


今までの方法


build.gradle

dependencies {

classpath "com.android.tools.build:gradle:1.3.0-beta1"
classpath "com.android.databinding:dataBinder:1.0-rc0"
}


app/build.gradle

apply plugin: com.android.application'

apply plugin: 'com.android.databinding'

今まで、というか去年の年末まではこの方法で大丈夫だったはず。。


新しい方法

build.gradleを以下のように修正してsyncします。


build.gradle

    dependencies {

classpath 'com.android.tools.build:gradle:2.0.0-beta5'
}


app/build.gradle

android {

dataBinding {
enabled = true
}
}

DataBindingが1.0になったタイミングでGradleに含まれるようになり、設定が変わったらしい。


なんだ楽勝じゃん

って思ったらDataBindingUtilが予測に出てこない。。

よく見るとsyncでエラーが出ていた。


Warning:Gradle version 2.10 is required. Current version is 2.8

というメッセージが。

なるほど、バージョンあげればいいのね。

gradle>wrapper>gradle-wrapper.propertiesを以下のように修正してsyncします。


gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-2.11-all.zip



Warningが消えない

syncしてもInvalidate Caches/RestartしてもWarningが消えない。おや・・・?


Gradleを手動でダウンロードしてくる

結局gradle-2.11-all.ziphttps://services.gradle.org/distributions から直接ダウンロードしてきてGradle homeに配置したら直りました。

(Gradle homeはSettingsから"Gradle"で検索すれば見つかります。)


まとめ

まずbuild.gradleを修正します。


build.gradle

    dependencies {

classpath 'com.android.tools.build:gradle:2.0.0-beta5'
}


app/build.gradle

android {

dataBinding {
enabled = true
}
}

次にgradle/wrapper/gradle-wrapper.propertiesを修正します。


gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-2.11-all.zip


これでsyncしてもエラーが消えない場合は

gradle-2.11-all.ziphttps://services.gradle.org/distributions から

直接ダウンロードしてきてGradle homeに配置してsyncします。

それでもエラーが出ていたらInvalidate Caches/Restartしてください。

※Gradleのバージョンは現時点での最新を使いました。適宜読み替えてください。


参考リンク

http://developer.android.com/intl/ja/tools/data-binding/guide.html

http://stackoverflow.com/questions/34037009/android-data-binding-nosuchmethoderror/34069832#34069832

http://www.codeprogression.com/2015/11/12/data-binding-closure/

http://naotoogawa.hatenablog.jp/entry/2016/01/23/Warning%3AGradle_version_2_10_is_required__Current_version_is_2_8

http://qiita.com/hkurokawa/items/1c53c7de1c277b7f7675

http://qiita.com/AbeHaruhiko/items/fd9a01ad6fc84309e857