Android Studio Dolphin おすすめの Gradle Plugin と Gradle のバージョン

アプリ開発環境の設定がはややこしいですね。

今現在 (2022-12-01) 時点でのバージョンで順番に整えていきましょう。

 

■ Android Studio

安定版最新は 「Android Studio Dolphin | 2021.3.1」 です。

👉 Android Studio Dolphin | 2021.3.1  |  Android デベロッパー  |  Android Developers hatena-bookmark

使ってるバージョンが分からない場合は、Android Studio を開いた状態でメニューから以下から。


[Android Studio]

  ↓

[About Android Studio]

About Android Studio

 

■ Android Gradle Plugin

Android Gradle Plugin のバージョンは、使用する Android Studio のバージョンに依存しています。

Android Gradle plugin and Android Studio compatibility

👉 Android Gradle plugin and Android Studio compatibility - Android Gradle plugin release notes  |  Android Developers hatena-bookmark

Android Studio 「Android Studio Dolphin | 2021.3.1」 に対応している Android Gradle Plugin のバージョンは 「3.2-7.3」 です。

Google Mavens Repository で見てみます。

Google Mavens Repository

👉 com.android.tools.build:gradle - Google's Maven Repository hatena-bookmark

現在、「7.3.1」 が安定版最新です。

以下の話が必須になります。

👉 【Plugin DSL】「com.android.tools.build:gradle」の記述は不要? hatena-bookmark

 

■ Gradle

Gradle のバージョンは、使用する Android Gradle Plugin のバージョンに依存しています。

When you update Android Studio, you may receive a prompt to also update Gradle to the latest available version. You can choose to accept the update or manually specify a version based on your project's build requirements.

👉 Update Gradle - Android Gradle plugin release notes  |  Android Developers hatena-bookmark

Android Gradle Plugin 「7.3.1」 に対応している Gradle のバージョンは 「7.4 以上」 です。

Gradle Distributions で一覧を見ます。

https://services.gradle.org/distributions

👉 Gradle Distributions hatena-bookmark

Gradle Version Information でも Current Release を見ます。

Gradle Version Information


{
  "version" : "7.6",
  "buildTime" : "20221125133510+0000",
  "current" : true,
  "snapshot" : false,
  "nightly" : false,
  "releaseNightly" : false,
  "activeRc" : false,
  "rcFor" : "",
  "milestoneFor" : "",
  "broken" : false,
  "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6-bin.zip",
  "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-bin.zip.sha256",
  "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-wrapper.jar.sha256"
}

👉 Gradle Version Information hatena-bookmark

現在、「7.6」 が安定版最新です。

👉 Gradle 7.6 Release Notes hatena-bookmark

 

■ まとめ

今現在、Android アプリ開発環境のおすすめバージョンズは、


Android Studio : Dolphin | 2021.3.1 Patch 1
Android Gradle Plugin : 7.3.1
Gradle : 7.6

となります。

Android Studio 上で簡単に確認することもできますが、


[File]

  ↓

[Project Structure]

  ↓

[Project]

「⚠ This project uses Gradle Version Catalogs: this tool may not behave as expected.」 と表示されたりする Gradle Version Catalog まわりで dependencies の確認や更新作業があやしくなっています。

Terminal から確認してみますか。


❯ ./gradlew -v

------------------------------------------------------------
Gradle 7.6
------------------------------------------------------------

Build time:   2022-11-25 13:35:10 UTC
Revision:     daece9dbc5b79370cc8e4fd6fe4b2cd400e150a8

Kotlin:       1.7.10
Groovy:       3.0.13
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          11.0.16.1 (Homebrew 11.0.16.1+0)
OS:           Mac OS X 13.0.1 x86_64

ややこしいですね、バージョンたち。

複数の確認方法があったほうがいいように思います。

👉 Android Studio Electric Eel おすすめの Gradle Plugin と Gradle のバージョン hatena-bookmark
👉 Android 開発環境のいろいろな「バージョン」の 確認方法 と 関係 2022年11月 hatena-bookmark


Java home is different. が消えない。

私の場合は ./gradlew --info での表示に気づきましたが。


Java home is different.

これが消えない。

前にも似たようなことがありました。



設定の3ヶ所を確認する。


- IDE設定の変更

- 環境変数 JAVA_HOME の変更

- gradle.properties の org.gradle.java.home

👉 AndroidStudio 利用する Java (JDK) の選択・設定の方法 hatena-bookmark

3つの設定内容は一致している。

しかし、消えない。

調べるとこんな。

The last thing that helped is deleting both the .gradle and .idea projects. All of sudden, everything worked magically!
– Vinayak Ponangi Jun 2 at 19:00

👉 java - IntelliJ Build Error Context Mismatch - Stack Overflow hatena-bookmark

プロジェクト root 直下のディレクトリごと 2つ消します。


.gradle/

.idea/

削除後は、再度プロジェクトディレクトリを読み込むと、2つのディレクトリは新たに作成されます。

これで直りました。

なんすかね。

最近は、環境まわりではハマること多くなってきてません?

👉 Gradle sync failed: Java home is different. : IDEA-266535 hatena-bookmark


【Android Studio】Gradle Version Catalog「Live Template」を使って インライン・テーブル に瞬時に書き換える

だるいですよね、インラインテーブル記述。


name = { first = "Tom", last = "Preston-Werner" }
point = { x = 1, y = 2 }
animal = { type.name = "pug" }

👉 TOML: 日本語 v0.5.0 hatena-bookmark

Android Studio でも

Graadle Version Catalog で、最初は、こんな記述でも


[plugins]
android-material = "com.google.android.material:material:1.8.0-alpha02"

やがて、


[plugins]
android-material = { module = "com.google.android.material:material", version = "1.8.0-alpha02" }

となり


[versions]
android-material = "1.8.0-alpha02"

[plugins]
android-material = { module = "com.google.android.material:material", version.ref = "android-material" }

というふうに変わっていきます。

大量にやってるのも地味にだるい。

Live Templete を使って書き換えます。


Preferences

  ↓

Live Templates

から作っていきます。

ここマクロたちは、思ったより使いづらいものが多い。

live template macro

👉 intellij-community/platform/lang-impl/src/com/intellij/codeInsight/template/macro at master · JetBrains/intellij-community hatena-bookmark

割と使える Groovy のマクロ。

groovyScript(, [arg, ...])

Executes the Groovy script passed as a string.

The first argument is a string with either the text of the script or the path to the file that contains the script. The function passes other optional arguments to the script as values for _1, _2, _3, ..., _n variables. Also, you can access the current editor from inside the script using the _editor variable.

The following example shows a groovyScript() function that splits the selected text into words and displays them as a numbered list:


groovyScript("def result = ''; _1.split().eachWithIndex { item, index -> result = result + index.next() + '. ' + item + System.lineSeparator() }; return result;", SELECTION);

👉 Edit Template Variables dialog | IntelliJ IDEA hatena-bookmark

以下の感じで設定して4つのテンプレートを記述しました。

どれも似たような記述なので、一つだけ貼っておきます。

使い回せます。

使い方は、該当文字列をコピーしてから、Abbreviation を入力で、テンプレートを吐き出しながらキーなどを編集してください。

結果。

toml live template

キーの編集に連携されて関連記述が編集されるのがいいところでしょうか。

けどまあ、Android Studio 本体の機能更新が待たれるところですが。

 

🙆 追記

複数行一括のほうがいいので以下の方法を実際は使っています。