AndroidStudioでいじっているプロジェクトを切り替えるとき、切り替え前と切り替え後のプロジェクトで指定されているGradleのバージョンが違うときがある。

開いたときにいきなり数百メガバイトくらいあるデカめのGradleディストリビューションをダウンロードしてくる。その結果~/.gradleフォルダが無駄に膨らんでいく。これをやめてくれ。お願いだからダウンロードする前に現時点でローカルにあるバージョンに切り替えるか聞いてくれ。

Gradleバージョンとは

プロジェクトを開いた後ならFile>Project Structureから見られます。Gradle本体のバージョンとAndroid Gradle Pluginのバージョンとは異なります。Pluginの方はある程度新しいバージョンのGradleを要求するのでGradleバージョンは高い(新しい)ほど何も文句を言われなくてHappy。とにかくPluginの方もGradleの方も新しいの使っておけばハッピーでしょう? ちなみにPluginの方は古いの使っているとIDEが教えてくれます。Gradle本体の方はだいたい何も言われません。勝手に古いのをダウンロードします。

勝手にダウンロードさせない対処法

プロジェクトを開いた後ならFile>Project Structureから切り替えられますが開いてしまうともうダウンロードされてしまうので開く前に手動でバージョンを最新にします。

project_dir/gradle/wrapper/gradle-wrapper.properties

を開きます。ここで最後の行を最新のバージョンに書き換えます。書いている時点では以下

#Sat Dec 30 23:34:48 JST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip

バージョンが5.5です。これで次開いたときにGradleのバージョン5.5が使われます。Pluginの方はIDEが聞いてくれるのでそのまま開いてもハッピーです。その他のこともだいたい開いた後でどうにかなりますね。ちなみに、多少調べた結果distributionUrlにファイル名だけ指定するとかも出てきましたがこれはうまくいきません。まあdistributionUrlて言ってるのにファイル名だけ指定しても無理よな。なんか行けそうな雰囲気はあったが。

勝手にダウンロードされた場合

~/.gradle/wrapper/dists/以下の不要なバージョンを削除しておく。~/.gradle以下の他のディレクトリにもゴミが溜っているので作業が終わったら削除しておくといい。なんなら~/.gradleはまるごと削除しても問題ない。勝手にダウンロードされるので。

解決になってない?

~/.gralde/wrapper/dists以下を勝手に除いてそのバージョンでやってくれればこのページのタイトルが言ってることは解決するのにな。どうにかGradleやAndroidStudio側の設定とかで無理なんだろうか。分かれば適宜追加していく。プロジェクトごとに同じバージョンのGradleがプロジェクトディレクトリ配下のgradle/wrapper以下にダウンロードされるのは最悪なので今のところはこれでやっていく。