年が明けてから新しくDataBinding
を使用するプロジェクトを作成しようとしたら、ビルドが通らなかったので、調べた解決策を記載します。
今までの方法
dependencies {
classpath "com.android.tools.build:gradle:1.3.0-beta1"
classpath "com.android.databinding:dataBinder:1.0-rc0"
}
apply plugin: ‘com.android.application'
apply plugin: 'com.android.databinding'
今まで、というか去年の年末まではこの方法で大丈夫だったはず。。
新しい方法
build.gradle
を以下のように修正してsyncします。
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0-beta5'
}
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します。
distributionUrl=https\://services.gradle.org/distributions/gradle-2.11-all.zip
Warningが消えない
syncしてもInvalidate Caches/RestartしてもWarningが消えない。おや・・・?
Gradleを手動でダウンロードしてくる
結局gradle-2.11-all.zip
をhttps://services.gradle.org/distributions から直接ダウンロードしてきてGradle homeに配置したら直りました。
(Gradle homeはSettings
から"Gradle"で検索すれば見つかります。)
まとめ
まずbuild.gradle
を修正します。
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0-beta5'
}
android {
dataBinding {
enabled = true
}
}
次にgradle/wrapper/gradle-wrapper.properties
を修正します。
distributionUrl=https\://services.gradle.org/distributions/gradle-2.11-all.zip
これでsyncしてもエラーが消えない場合は
gradle-2.11-all.zip
をhttps://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