Flutter 3.19.2 での Kotlin Gradle プラグイン設定方法
問題点
Flutter 3.19.2 では、プロジェクトの /android/build.gradle ファイルから buildscript ブロックが削除されました。以前はこのファイル内で kotlin_version を定義していましたが、新しい構成では次のような最小限の設定のみが残されています:
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プラグインのバージョンを設定します:
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 ですが、プロジェクトによって異なります。
推奨移行手順
settings.gradleの更新
上記例のようにpluginsブロック内でKotlinバージョンを指定build.gradleのクリーンアップ
古いbuildscriptブロックを完全に削除:diff- buildscript { - ext.kotlin_version = '1.8.0' - repositories { - google() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } - }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"
エラー解消のための追加ステップ
ビルドエラーが継続する場合
次のキャッシュクリーンアップを実行してください:
- Flutterプロジェクトで:
flutter clean- Androidディレクトリで:
cd android
./gradlew cleanBuildCache- グローバルGradleキャッシュの削除:
- Windows:
%USERPROFILE%/.gradle/cachesを削除 - macOS/Linux:
~/.gradle/cachesを削除
キャッシュ削除のヒント
「ファイルが使用中」エラーが出る場合:
- Windows:
resmon→ [関連付けられたハンドル] で「gradle」検索 → Javaプロセス終了 - macOS/Linux:
lsof | grep gradle/caches→ PIDを特定しkill -9 <PID>
バージョン管理のベストプラクティス
バージョン変数の一元化
gradle.propertiesファイルでバージョン管理:propertieskotlinVersion=2.1.10 agpVersion=8.1.2settings.gradleで変数参照:groovyplugins { id "com.android.application" version "${agpVersion}" apply false id "org.jetbrains.kotlin.android" version "${kotlinVersion}" apply false }
トラブルシューティング
移行後に発生する可能性のある問題
プロジェクト依存関係エラー:
subprojectsブロックに以下を追加groovysubprojects { afterEvaluate { project -> if (project.plugins.hasPlugin("com.android.application") || project.plugins.hasPlugin("com.android.library")) { project.android { compileSdkVersion 34 buildToolsVersion "34.0.0" } } } }プラグインが見つからない:
pluginManagementブロックにリポジトリ追加groovypluginManagement { repositories { google() mavenCentral() gradlePluginPortal() // これを追加 } // ... }
参考リソース
新しいビルド構成ではGradleのビルドパフォーマンスが向上し、マルチモジュール構成の管理も容易になります。適切に移行することで、Flutterの最新機能とKotlinのセキュリティアップデートをスムーズに活用できます。