「kotlin-android」のような Plugin ID は使いづらい - Plugin(プラグイン) ID の探し方

以下の関係を公開リポジトリで確認しながら、Plugin ID を見つけていきます。


classpath "org.jetbrains.kotlin:kotlin-serialization:1.7.20"


groupId    : org.jetbrains.kotlin
artifactId : kotlin-serialization
version    : 1.7.20

👉 https://plugins.gradle.org/search?term=org.jetbrains.kotlin.android
👉 https://maven.google.com/web/index.html?q=org.jetbrains.kotlin.android
👉 https://central.sonatype.dev/search?q=org.jetbrains.kotlin.android

 

🔍 1. Gradle Plugins で探す

gradle plugin search
👉 Gradle - Plugins


classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20"
apply plugin: "org.jetbrains.kotlin.android"


plugins {
  id "org.jetbrains.kotlin.android" version "1.7.20"
}

👉 Gradle - Plugin: org.jetbrains.kotlin.android


classpath "org.gradle.kotlin:gradle-kotlin-dsl-plugins:3.1.0"
apply plugin: "org.gradle.kotlin.kotlin-dsl"


plugins {
  id "org.gradle.kotlin.kotlin-dsl" version "3.1.0"
}

👉 Gradle - Plugin: org.gradle.kotlin.kotlin-dsl


classpath "org.jetbrains.compose:compose-gradle-plugin:1.3.0-alpha01-dev827"
apply plugin: "org.jetbrains.compose"


plugins {
  id "org.jetbrains.compose" version "1.3.0-alpha01-dev827"
}

👉 Gradle - Plugin: org.jetbrains.compose


classpath "com.diffplug.spotless:spotless-plugin-gradle:6.11.0"
apply plugin: "com.diffplug.spotless"


plugins {
  id "com.diffplug.spotless" version "6.11.0"
}

👉 Gradle - Plugin: com.diffplug.spotless


classpath "com.github.ben-manes:gradle-versions-plugin:0.43.0"
apply plugin: "com.github.ben-manes.versions"


plugins {
  id "com.github.ben-manes.versions" version "0.43.0"
}

👉 Gradle - Plugin: com.github.ben-manes.versions

よく使いそうな Owner :

Gradle - prod-plugin-portal-publishing (Gradle)
👉 Gradle - prod-plugin-portal-publishing (Gradle)

Gradle - kotlin (Kotlin Team)👉 Gradle - kotlin (Kotlin Team)

Gradle - jetbrains (JetBrains)
👉 Gradle - jetbrains (JetBrains)

Gradle - jb-compose (JetBrains Compose)
👉 Gradle - jb-compose (JetBrains Compose)

 

🔍 2. Google's Maven Repository で探す

https://maven.google.com/web/index.html
👉 Google's Maven Repository

plugin idgradle.plugin で探すとよい。


plugin.id  : plugin.id.gradle.plugin : plugin.version
{group id} : {artifact id}


{artifact id} = "{plugin id}.gradle.plugin"


Group ID	com.android.application
Artifact ID	com.android.application.gradle.plugin
Version	8.0.0-alpha05


Plugin ID → "com.android.application"

👉 com.android.application - Google's Maven Repository


Group ID	com.android.library
Artifact ID	com.android.library.gradle.plugin
Version	8.0.0-alpha05


Plugin ID → "com.android.library"

👉 com.android.library - Google's Maven Repository


Group ID	com.google.firebase.crashlytics
Artifact ID	com.google.firebase.crashlytics.gradle.plugin
Version	2.9.2


Plugin ID → "com.google.firebase.crashlytics"

👉 com.google.firebase.crashlytics - Google's Maven Repository


Group ID	com.google.gms.google-services
Artifact ID	com.google.gms.google-services.gradle.plugin
Version	4.3.14


Plugin ID → "com.google.google-services"

👉 com.google.gms.google-services - Google's Maven Repository

 

🔍 3. Maval Central で探す

3つあるけど、どれがいいのか。

https://central.sonatype.dev/search
👉 Maven Central - Search ← 👌

https://search.maven.org/
👉 Maven Central Repository Search

https://mvnrepository.com/
👉 Maven Repository: Search/Browse/Explore

hilt, gradle.plugin のように入力して探すと良い。


<groupId>com.google.dagger.hilt.android</groupId>
<artifactId>com.google.dagger.hilt.android.gradle.plugin</artifactId>
<version>2.44</version>


Plugin ID → "com.google.dagger.hilt.android"

👉 Maven Central: com.google.dagger.hilt.android:com.google.dagger.hilt.android.gradle.plugin:2.44


<groupId>app.cash.sqldelight</groupId>
<artifactId>app.cash.sqldelight.gradle.plugin</artifactId>
<version>2.0.0-alpha04</version>


Plugin ID → "app.cash.sqldelight"

👉 Maven Central: app.cash.sqldelight:app.cash.sqldelight.gradle.plugin:2.0.0-alpha04

 

🙆 参考

👉 【Plugin DSL】「com.android.tools.build:gradle」の記述は不要? hatena-bookmark
👉 【Gradle Version Catalog】libs.versions.toml キー名の形式 camelCase vs kebab-case hatena-bookmark
👉 「⚠ This project uses Gradle Version Catalogs: this tool may not behave as expected.」→ 今現在、Gradle Version Catalog には gradle-versions-plugin が必須では? hatena-bookmark


Android 開発環境のいろいろな「バージョン」の 確認方法 と 関係 2022年11月

開発中に、こんなエラーでました。


The project is using an incompatible version (AGP 8.0.0-alpha05) of the Android Gradle plugin. Latest supported version is AGP 7.3.1
https://developer.android.com/studio/releases#android_gradle_plugin_and_android_studio_compatibility

良く分かっていないですが2つの「バージョン」の相性が悪いようです。

開発環境はそれぞれのバージョンを持つ複数の何かで構成されています。

これまでも整理してきましたが、

👉 【Android Studio】ビルド環境を安定した最新バージョンにする hatena-bookmark
👉 Android Studio の設定で「バージョン」の記述してるとこありすぎね? hatena-bookmark

これらを踏まえて、今現在のバージョンで再度整理してみます。

まずは、私の環境でそれぞれのバージョンを確認していきます。

 

■ Android Studio

Android Studio で、左上のメニューから、


Android Studio

  ↓

About Android Studio

Android Studio Dolphin | 2021.3.1 Patch 1


Android Studio Dolphin | 2021.3.1 Patch 1
Build #AI-213.7172.25.2113.9123335, built on September 30, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

Android Studio のバージョンは、


Android Studio Dolphin | 2021.3.1 Patch 1

です。

 

■ Android Gradle Plugin

同様にメニューから、


File

 ↓

Project Structure

 ↓

Project

選択肢しか表示されてない!

Android Gradle Plugin
👉 Cannot find AGP version in build files & empty Android Gradle Plugin Version - Stack Overflow hatena-bookmark

Plugin DSL の影響でしょうか。

module = "com.android.tools.build:gradle" を参照する id = "com.android.application" のバージョンを確認します。

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


# gradle/libs.versions.toml

[versions]
agp = "7.3.1"

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
# android-application = { id = "com.android.library", version.ref = "agp" }

Android Gradle plugin のバージョンは、


7.3.1

です。

最初のエラーのメッセージに従って 8.0.0-alpha05 → 7.3.1 と下げました。

👉 【Plugin DSL】Android Gradle Plugin のバージョンがわからない hatena-bookmark

 

■ Gradle

メニューから、


File

 ↓

Project Structure

 ↓

Project

Gradle version

または、ターミナルでコマンド打ちます。


❯ ./gradlew --version

------------------------------------------------------------
Gradle 7.5.1
------------------------------------------------------------

Build time:   2022-08-05 21:17:56 UTC
Revision:     d1daa0cbf1a0103000b71484e1dbfe096e095918

Kotlin:       1.6.21
Groovy:       3.0.10
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 x86_64

または、gradle-wrapper.properties を見ます。


# gradle/wrapper/gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

Gradle のバージョンは、


7.5.1

です。

 

■ 各バージョン同士の関係

The Android Studio build system is based on Gradle, and the Android Gradle plugin adds several features that are specific to building Android apps. The following table lists which version of the Android Gradle plugin is required for each version of Android Studio.

Android StudioのビルドシステムはGradleをベースにしており、Android Gradleプラグインは、Androidアプリのビルドに特化したいくつかの機能を追加します。次の表は、Android Studioの各バージョンに必要なAndroid Gradleプラグインのバージョンを示しています。

Android Gradle plugin and Android Studio compatibility
👉 Android Gradle plugin and Android Studio compatibility - Android Studio Dolphin | 2021.3.1  |  Android Developers hatena-bookmark

Android Studio Dolphin | 2021.3.1 に、今現在、最適な Android Gradle Plugin は、安定版最新の 7.3.1 です。

The following table lists which version of Gradle is required for each version of the Android Gradle plugin. For the best performance, you should use the latest possible version of both Gradle and the plugin.

次の表は、Android Gradleプラグインの各バージョンに必要なGradleのバージョンを示しています。最高のパフォーマンスを得るためには、Gradleとプラグインの両方の可能な限り最新のバージョンを使用する必要があります。

The following table lists which version of Gradle is required for each version of the Android Gradle plugin. For the best performance, you should use the latest possible version of both Gradle and the plugin.
👉 Update Gradle - Android Gradle plugin release notes  |  Android Developers hatena-bookmark

Android Gradle Plugin7.3.1 に、最適な Gradle のバージョンは、安定版最新の 7.5.1 です。

 

■ 各リポジトリとダウンロード先

Android StudioAndroid Gradle PluginGradle それぞれの公開してるURLを並べておきます。

👉 Download Android Studio & App Tools - Android Developers hatena-bookmark
Android Studio Download

👉 Android Gradle Plugin - Google's Maven Repository hatena-bookmark
Android Gradle Plugin

👉 Gradle Distributions hatena-bookmark
Gradle Distributions

 

■ まとめ

それぞれのバージョン同士に範囲があることを考えながら、その中で安定版の最新のバージョンにするのがいいでしょう。

この先には、Kotlin Gradle Plugin "org.jetbrains.kotlin:kotlin-gradle-plugin" のバージョンなどもあったりしますが、また次の機会に書きます。

👉 【Android Studio Flamingo】dependencies をバージョンアップデートするときに確認するべき3つの相性 hatena-bookmark

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


【Plugin DSL】Android Gradle Plugin のバージョンを調べる方法

Google Maven Repository では公開されているバージョンは分かりますが。

【Plugin DSL】Android Gradle Plugin のバージョンはどこに記述するのか

👉 Google's Maven Repository hatena-bookmark

Plugin DSLVersion Catalogtoml を使うと、今現在安定版の Android Studio 上ではうまく表示されないようです。

Android Gradle Plugin

レガシーな記述では、build.gradle の以下の* 部分に記述されていました。


// build.gradle (root)

buildscript {
  repositories {
    gradlePluginPortal()
    google()
    mavenCentral()
  }

  dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1' // *
    classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.41'
  }
}


// app/build.gradle (module)

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

一方、 Plugin DSL では、Plugin Marker Artifacts を利用して解決されるので、com.android.tools.build:gradle の記述は消えます。

よくある基本的な記述を以下に挙げます。


# gradle/libs.versions.toml

[versions]
agp = "7.3.1" // *
kotlin = "1.7.20"

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" } // *
android-library = { id = "com.android.library", version.ref = "agp" } // *
android-lint = { id = "com.android.lint", version.ref = "agp" }
android-test = { id = "com.android.test", version.ref = "agp" }

kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }


// build.gradle.kts (root)

plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.android.library) apply false
    alias(libs.plugins.android.lint) apply false
    alias(libs.plugins.android.test) apply false
    alias(libs.plugins.kotlin.android) apply false
    alias(libs.plugins.kotlin.kapt) apply false
}


// app/build.gradle.kts (module)

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
}

この場合の、Android Gradle plugin のバージョンは、 [version]agp の値になりますので、7.3.1 ということになります。

詳しくは以前にに書きました。
👉 【Plugin DSL】「com.android.tools.build:gradle」の記述は不要? hatena-bookmark

 

■ まとめ

build.gradle


classpath 'com.android.tools.build:gradle:x.y.z'

の記述がない場合の Android Gradle Plugin のバージョンは、

以下の、どれかのプラグインID のバージョン(共通) です。


- com.android.application
- com.android.library
- com.android.lint
- com.android.test

👉 q=.gradle.plugin - Google's Maven Repository hatena-bookmark

👉 Jetpack Compose Samples でも使われている「Version catalog update plugin」で libs.versions.toml を書き出してみる hatena-bookmark

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