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.2
settings.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のセキュリティアップデートをスムーズに活用できます。