古いプロジェクトにViewBindingをGradleエラーで導入できない方へ
こんにちは。
今日ViewBindingを自作しているアプリに導入しようとしたところGradleさんに
ERROR:Could not find method viewBinding() for arguments
とエラーを吐かれました。
英語が読める方は以下のサイトから解決方法を知ることができます。
https://stackoverflow.com/questions/57947991/error-could-not-find-method-viewbinding-for-arguments
今回は軽く何故このエラーが起きたのかを分析して次このようなことで時間を使わないよう備忘録として残したいと思います。
まず、はじめにViewBindingは
https://developer.android.com/topic/libraries/view-binding
注: ビュー バインディングを利用できるのは、Android Studio 3.6 Canary 11 以降に限られます。
と注意書きされています。
今回私はAndroidStudio 4.0を使っていたので、問題ないだろうと思いそのまま進めましたが、そういう問題ではなく、
classpath 'com.android.tools.build:gradle:n.n.n
の部分(nは任意の数)をAndroidStudio3.6で導入された値(?) 3.6.0にあげて、
gradke-wrapper.propertiesのdistributionUrlの部分も対応したURL
(https\://services.gradle.org/distributions/gradle-5.6.4-all.zip)
に変更したことから、Android Studio 3.6 Canary 11以降のバージョンのAndroidStudioでアプリをビルドしたら使えるのではなく(考えてみればそうだが...)
Android Studio 3.6 Canary 11以降でアプリ作成時などに用いられているGradleのバージョンでViewBindingを利用できるということになります。
知見
・普段何も意識することなくライブラリやコルーチンをimplementationして使っていた
Gradle自体のバージョンをどんな風にあげるか知るきっかけになった。
https://services.gradle.org/distributions/
・ここ(distributionUrlのファイル名の前の部分)に飛んでみると現時点で6.3までリリースされていて、かなり高い頻度で更新されていることがわかった。
・distriburionとはなんぞと思って翻訳をかけた際、配布や配給という意味があるらしく、URLを入力していることから、Gradleの何かしらを取ってきていると思われる。
それによって、オフラインでGradleがキャッシュなどなしで動作しないのかがわかった。
理解したいこと
・Gradle.zipの中に何があって、どんな仕組みで動いているのかを解剖する