Flutter Gradleプラグインの非推奨警告の解決
問題の説明
Flutter 3.19.0以降でアプリを実行すると、次の警告が表示されます:
You are applying Flutter's app_plugin_loader Gradle plugin
imperatively using the apply script method, which is deprecated and
will be removed in a future release. Migrate to applying Gradle
plugins with the declarative plugins block:
https://flutter.dev/go/flutter-gradle-plugin-apply
You are applying Flutter's main Gradle plugin imperatively using the
apply script method, which is deprecated and will be removed in a
future release. Migrate to applying Gradle plugins with the
declarative plugins block:
https://flutter.dev/go/flutter-gradle-plugin-apply
この警告は、古いGradleプラグイン適用方法(apply script
)が非推奨となったために発生します。Flutter 3.16以降では、Gradleプラグインを宣言的に適用する新しい方法に移行する必要があります。警告を放置すると、将来のFlutter更新でビルドが失敗する可能性があります。
根本的な原因
- プロジェクトがFlutter 3.16以前で作成されている
android/settings.gradle
とandroid/app/build.gradle
で非推奨のapply
メソッドを使用している- プラグイン適用方法が新仕様に更新されていない
推奨解決方法
公式の移行ガイド(Flutter公式ドキュメント)に基づいた手順です。以下のファイルを順次編集します。
ステップ1: AGPとKotlinバージョンの確認
android/build.gradle
を開き、以下を確認します:
buildscript {
ext.kotlin_version = '1.7.10' // Kotlinバージョン(例)
dependencies {
classpath 'com.android.tools.build:gradle:7.3.0' // AGP(Android Gradle Plugin)バージョン(例)
}
}
記録しておく値:
AGPバージョン
(例:7.3.0)Kotlinバージョン
(例:1.7.10)
ステップ2: settings.gradleの更新(プロジェクトレベル)
android/settings.gradle
を以下で完全に置換:
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}()
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "{agpVersion}" apply false // {agpVersion}をステップ1の値に
id "org.jetbrains.kotlin.android" version "{kotlinVersion}" apply false // {kotlinVersion}をステップ1の値に
}
include ":app"
設定例:
// 例(AGP: 7.3.0, Kotlin: 1.7.10の場合)
plugins {
...
id "com.android.application" version "7.3.0" apply false
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
}
ステップ3: build.gradleの更新(プロジェクトレベル)
android/build.gradle
からbuildscriptブロック全体を削除。ファイルは以下だけ残します:
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
}
ステップ4: app/build.gradleの更新(アプリレベル)
android/app/build.gradle
を次の通り修正:
1. 古いプラグイン適用部分を削除
以下のブロックを完全に削除:
// 削除対象(行番号は例)
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found...")
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
2. 新しいプラグイン宣言を追加
ファイルの先頭に以下を追加:
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
3. 不要な依存関係を削除
dependencies
ブロックからKotlin STDライブラリを削除:
dependencies {
// 次の行を削除(存在する場合)
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
Firebase/Crashlytics使用時の追加手順
GMSやCrashlyticsを使用している場合:
android/build.gradle
から関連classpathを削除app/build.gradle
からapply plugin
行を削除settings.gradle
のpluginsブロックに追加:
plugins {
...
id "com.google.gms.google-services" version "4.4.0" apply false
id "com.google.firebase.crashlytics" version "2.9.9" apply false
}
app/build.gradle
のpluginsブロックに追加:
plugins {
...
id "com.google.gms.google-services"
id "com.google.firebase.crashlytics"
}
代替方法:プロジェクト再生成
カスタマイズが少ない場合は、Androidディレクトリを再生成する方が簡単です:
# カレントディレクトリで実行
rm -rf android/
flutter create . --platforms=android
注意点
この方法ではAndroid固有のカスタマイズ(権限設定、アイコン変更など)が全て消去されます。必ずバックアップを取ってから実行してください。
よくあるエラーと対処法
// エラー例:プラグインが見つからない
Plugin [id: 'dev.flutter.flutter-gradle-plugin'] was not found...
解決策:
settings.gradle
のincludeBuild
パスが正しいか確認flutterSdkPath
の取得ロジックが最新版と同じか確認local.properties
にflutter.sdk
の正しいパスが記載されているか確認
重要
作業前に全てのGradleファイルをバックアップし、バージョン番号はご自身のプロジェクトのものを使用してください。変更後はflutter clean
を実行してからビルドします。
最終チェックリスト
settings.gradle
: 宣言的プラグイン設定 ✅build.gradle
: buildscriptブロック削除 ✅app/build.gradle
:- 不要な
apply
行削除 ✅ - 先頭にpluginsブロック追加 ✅
- 不要な依存関係削除 ✅
- 不要な
- 全ファイルでバージョン番号が一致 ✅
これらの手順を完了すると警告が解消され、Flutterの最新Gradleプラグイン仕様に適合します。問題が解決しない場合は、公式移行ガイドで最新情報を確認してください。