はじめに
Flutter 3.19してAndroidで実行したら「You are applying Flutter's main Gradle plugin imperatively using the apply script method」という警告しました。URLの記載を見ながら修正はできましたが、ちょっと分かりずらかったので、メモを残しておきます。ご参考になれば、というのと、自分が後で必要になると思う。
警告文全体
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
android/build.gradle
削除部分
buildscript {
ext.kotlin_version = '1.8.22'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.3.0'
classpath 'com.google.gms:google-services:4.3.13'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
kotlin_version と com.android.tools.build:gradleのバージョン をメモしておく。
ファイル冒頭に追加
allprojects {
repositories {
google()
mavenCentral()
}
}
android/app/build.gradle
以下を削除
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
(中略:ここは消さない。flutterVersionCodeとかflutterVersionNameとかは後で使われる)
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
以下をファイル冒頭に追加
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
id "com.google.gms.google-services"
id "com.google.firebase.crashlytics"
}
id "com.google.gms.google-services"はFirebase等、 id "com.google.firebase.crashlytics" はFirebase Crashlytics が必要であれば追加。不要であれば、なくて良いはず。(あったら「Plugin [id: ‘com.google.gms.google-services’] was not found in any of the following sources:」とエラーが出た)
以下を dependencies の直前に追加
def kotlin_version = "1.8.22"
1.8.22 は、上記でメモしたもの。
android/setting.gradle
以下を削除
以下のようでしたが、ファイル全部書き換えのため削除。
include ':app'
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.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
}
settings.ext.flutterSdkPath = flutterSdkPath()
includeBuild("${settings.ext.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 "7.3.0" apply false
id "org.jetbrains.kotlin.android" version "1.8.22" apply false
id "com.google.gms.google-services" version "4.4.0" apply false
id "com.google.firebase.crashlytics" version "2.9.9" apply false
}
include ":app"
org.jetbrains.kotlin.android のバージョンはメモしたkotlin_versionを記載する
com.android.application のバージョンはメモしたcom.android.tools.build:gradleのバージョンを記載する。
id "com.google.gms.google-services"の行はFirebase等、 id "com.google.firebase.crashlytics" の行はFirebase Crashlytics が必要であれば追加。不要であれば、なくて良いはず。