Skip to content

Flutter 3.19.2 での Kotlin Gradle プラグイン設定方法

問題点

Flutter 3.19.2 では、プロジェクトの /android/build.gradle ファイルから buildscript ブロックが削除されました。以前はこのファイル内で kotlin_version を定義していましたが、新しい構成では次のような最小限の設定のみが残されています:

groovy
allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

tasks.register("clean", Delete) {
    delete rootProject.buildDir
}

この変更により発生する主な問題:

  • Kotlin Gradle プラグインのバージョンを指定する場所が不明
  • 古いバージョンのKotlinプラグインを使用した時に発生するエラー(例: Flutter requires a newer version of the Kotlin Gradle plugin
  • 公式ドキュメントでの移行ガイダンスの不足

解決方法

Kotlinバージョンの正しい設定場所

android/settings.gradle ファイル でKotlinプラグインのバージョンを設定します:

groovy
pluginManagement {
    // ... 既存の設定 ...
}

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version "8.1.2" apply false  // Android Gradleプラグイン
    id "org.jetbrains.kotlin.android" version "2.1.10" apply false // Kotlinバージョンを追加
}

include ":app"

バージョン確認

必ずKotlin公式リリースページで最新バージョンを確認してください。現在(2025年3月時点)の最新安定版は 2.1.10 ですが、プロジェクトによって異なります。

推奨移行手順

  1. settings.gradle の更新
    上記例のように plugins ブロック内でKotlinバージョンを指定

  2. build.gradle のクリーンアップ
    古い buildscript ブロックを完全に削除:

    diff
    - buildscript {
    -     ext.kotlin_version = '1.8.0'
    -     repositories {
    -         google()
    -         mavenCentral()
    -     }
    -     dependencies {
    -         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    -     }
    - }
  3. app/build.gradle のプラグイン設定
    命令型から宣言型へ変更:

    diff
    + plugins {
    +     id "com.android.application"
    +     id "kotlin-android"
    +     id "dev.flutter.flutter-gradle-plugin"
    + }
    
    - apply plugin: 'kotlin-android'
    - apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

エラー解消のための追加ステップ

ビルドエラーが継続する場合

次のキャッシュクリーンアップを実行してください:

  1. Flutterプロジェクトで:
bash
flutter clean
  1. Androidディレクトリで:
bash
cd android
./gradlew cleanBuildCache
  1. グローバルGradleキャッシュの削除:
  • Windows: %USERPROFILE%/.gradle/caches を削除
  • macOS/Linux: ~/.gradle/caches を削除

キャッシュ削除のヒント

「ファイルが使用中」エラーが出る場合:

  1. Windows: resmon → [関連付けられたハンドル] で「gradle」検索 → Javaプロセス終了
  2. macOS/Linux: lsof | grep gradle/caches → PIDを特定し kill -9 <PID>

バージョン管理のベストプラクティス

  1. バージョン変数の一元化
    gradle.properties ファイルでバージョン管理:

    properties
    kotlinVersion=2.1.10
    agpVersion=8.1.2
  2. settings.gradle で変数参照:

    groovy
    plugins {
        id "com.android.application" version "${agpVersion}" apply false
        id "org.jetbrains.kotlin.android" version "${kotlinVersion}" apply false
    }

トラブルシューティング

移行後に発生する可能性のある問題

  • プロジェクト依存関係エラーsubprojects ブロックに以下を追加

    groovy
    subprojects {
        afterEvaluate { project ->
            if (project.plugins.hasPlugin("com.android.application") || 
                project.plugins.hasPlugin("com.android.library")) {
                project.android {
                    compileSdkVersion 34
                    buildToolsVersion "34.0.0"
                }
            }
        }
    }
  • プラグインが見つからないpluginManagement ブロックにリポジトリ追加

    groovy
    pluginManagement {
        repositories {
            google()
            mavenCentral()
            gradlePluginPortal() // これを追加
        }
        // ...
    }

参考リソース

新しいビルド構成ではGradleのビルドパフォーマンスが向上し、マルチモジュール構成の管理も容易になります。適切に移行することで、Flutterの最新機能とKotlinのセキュリティアップデートをスムーズに活用できます。