diff --git a/dev/a11y_assessments/android/app/src/main/kotlin/com/example/a11y_assessments/MainActivity.kt b/dev/a11y_assessments/android/app/src/main/kotlin/com/example/a11y_assessments/MainActivity.kt index 43273ce8d82..ad39b4a46ff 100644 --- a/dev/a11y_assessments/android/app/src/main/kotlin/com/example/a11y_assessments/MainActivity.kt +++ b/dev/a11y_assessments/android/app/src/main/kotlin/com/example/a11y_assessments/MainActivity.kt @@ -2,5 +2,4 @@ package com.example.a11y_assessments import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity : FlutterActivity() diff --git a/dev/benchmarks/multiple_flutters/android/app/src/main/java/dev/flutter/multipleflutters/MainActivity.kt b/dev/benchmarks/multiple_flutters/android/app/src/main/java/dev/flutter/multipleflutters/MainActivity.kt index 4e96ded2a24..67d40c02688 100644 --- a/dev/benchmarks/multiple_flutters/android/app/src/main/java/dev/flutter/multipleflutters/MainActivity.kt +++ b/dev/benchmarks/multiple_flutters/android/app/src/main/java/dev/flutter/multipleflutters/MainActivity.kt @@ -4,18 +4,13 @@ package dev.flutter.multipleflutters -import android.content.Intent -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.view.View import android.widget.FrameLayout import android.widget.LinearLayout -import android.widget.TextView import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentManager import io.flutter.FlutterInjector import io.flutter.embedding.android.FlutterFragment -import io.flutter.embedding.engine.FlutterEngine import io.flutter.embedding.engine.FlutterEngineCache import io.flutter.embedding.engine.dart.DartExecutor @@ -25,10 +20,11 @@ class MainActivity : FragmentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val root = LinearLayout(this) - root.layoutParams = LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.MATCH_PARENT - ) + root.layoutParams = + LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.MATCH_PARENT, + ) root.orientation = LinearLayout.VERTICAL root.weightSum = numberOfFlutters.toFloat() @@ -39,21 +35,24 @@ class MainActivity : FragmentActivity() { val app = applicationContext as App val dartEntrypoint = DartExecutor.DartEntrypoint( - FlutterInjector.instance().flutterLoader().findAppBundlePath(), "main" + FlutterInjector.instance().flutterLoader().findAppBundlePath(), + "main", ) - val engines = generateSequence(0) { it + 1 } - .take(numberOfFlutters) - .map { app.engines.createAndRunEngine(this, dartEntrypoint) } - .toList() + val engines = + generateSequence(0) { it + 1 } + .take(numberOfFlutters) + .map { app.engines.createAndRunEngine(this, dartEntrypoint) } + .toList() for (i in 0 until numberOfFlutters) { val flutterContainer = FrameLayout(this) root.addView(flutterContainer) flutterContainer.id = 12345 + i - flutterContainer.layoutParams = LinearLayout.LayoutParams( - FrameLayout.LayoutParams.MATCH_PARENT, - FrameLayout.LayoutParams.MATCH_PARENT, - 1.0f - ) + flutterContainer.layoutParams = + LinearLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.MATCH_PARENT, + 1.0f, + ) val engine = engines[i] FlutterEngineCache.getInstance().put(i.toString(), engine) val flutterFragment = @@ -62,7 +61,7 @@ class MainActivity : FragmentActivity() { .beginTransaction() .add( 12345 + i, - flutterFragment + flutterFragment, ) .commit() } diff --git a/dev/benchmarks/platform_channels_benchmarks/android/app/src/main/kotlin/com/example/platform_channels_benchmarks/MainActivity.kt b/dev/benchmarks/platform_channels_benchmarks/android/app/src/main/kotlin/com/example/platform_channels_benchmarks/MainActivity.kt index a597100bb83..68d459e913e 100644 --- a/dev/benchmarks/platform_channels_benchmarks/android/app/src/main/kotlin/com/example/platform_channels_benchmarks/MainActivity.kt +++ b/dev/benchmarks/platform_channels_benchmarks/android/app/src/main/kotlin/com/example/platform_channels_benchmarks/MainActivity.kt @@ -11,28 +11,40 @@ import io.flutter.plugin.common.BinaryCodec import io.flutter.plugin.common.StandardMessageCodec import java.nio.ByteBuffer -class MainActivity: FlutterActivity() { +class MainActivity : FlutterActivity() { // We allow for the caching of a response in the binary channel case since // the reply requires a direct buffer, but the input is not a direct buffer. // We can't directly send the input back to the reply currently. - private var byteBufferCache : ByteBuffer? = null + private var byteBufferCache: ByteBuffer? = null + override fun configureFlutterEngine(flutterEngine: FlutterEngine) { val reset = BasicMessageChannel(flutterEngine.dartExecutor, "dev.flutter.echo.reset", StandardMessageCodec.INSTANCE) - reset.setMessageHandler { message, reply -> run { - byteBufferCache = null - } } - val basicStandard = BasicMessageChannel(flutterEngine.dartExecutor, "dev.flutter.echo.basic.standard", StandardMessageCodec.INSTANCE) + reset.setMessageHandler { message, reply -> + run { + byteBufferCache = null + } + } + val basicStandard = + BasicMessageChannel(flutterEngine.dartExecutor, "dev.flutter.echo.basic.standard", StandardMessageCodec.INSTANCE) basicStandard.setMessageHandler { message, reply -> reply.reply(message) } val basicBinary = BasicMessageChannel(flutterEngine.dartExecutor, "dev.flutter.echo.basic.binary", BinaryCodec.INSTANCE_DIRECT) - basicBinary.setMessageHandler { message, reply -> run { - if (byteBufferCache == null) { - byteBufferCache = ByteBuffer.allocateDirect(message!!.capacity()) - byteBufferCache!!.put(message) + basicBinary.setMessageHandler { message, reply -> + run { + if (byteBufferCache == null) { + byteBufferCache = ByteBuffer.allocateDirect(message!!.capacity()) + byteBufferCache!!.put(message) + } + reply.reply(byteBufferCache) } - reply.reply(byteBufferCache) - } } - val taskQueue = flutterEngine.dartExecutor.getBinaryMessenger().makeBackgroundTaskQueue(); - val backgroundStandard = BasicMessageChannel(flutterEngine.dartExecutor, "dev.flutter.echo.background.standard", StandardMessageCodec.INSTANCE, taskQueue) + } + val taskQueue = flutterEngine.dartExecutor.getBinaryMessenger().makeBackgroundTaskQueue() + val backgroundStandard = + BasicMessageChannel( + flutterEngine.dartExecutor, + "dev.flutter.echo.background.standard", + StandardMessageCodec.INSTANCE, + taskQueue, + ) backgroundStandard.setMessageHandler { message, reply -> reply.reply(message) } super.configureFlutterEngine(flutterEngine) } diff --git a/dev/integration_tests/abstract_method_smoke_test/android/app/src/main/kotlin/com/example/abstract_method_smoke_test/MainActivity.kt b/dev/integration_tests/abstract_method_smoke_test/android/app/src/main/kotlin/com/example/abstract_method_smoke_test/MainActivity.kt index f57b20aa76a..94428bbf46e 100644 --- a/dev/integration_tests/abstract_method_smoke_test/android/app/src/main/kotlin/com/example/abstract_method_smoke_test/MainActivity.kt +++ b/dev/integration_tests/abstract_method_smoke_test/android/app/src/main/kotlin/com/example/abstract_method_smoke_test/MainActivity.kt @@ -2,7 +2,6 @@ package com.example.abstract_method_smoke_test import android.content.Context import android.graphics.Color -import android.os.Bundle import android.view.View import android.view.inputmethod.InputMethodManager import androidx.annotation.NonNull @@ -30,25 +29,34 @@ class MainActivity : FlutterActivity() { } } - override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { - GeneratedPluginRegistrant.registerWith(flutterEngine); + override fun configureFlutterEngine( + @NonNull flutterEngine: FlutterEngine, + ) { + GeneratedPluginRegistrant.registerWith(flutterEngine) - val shimPluginRegistry = ShimPluginRegistry(flutterEngine); + val shimPluginRegistry = ShimPluginRegistry(flutterEngine) shimPluginRegistry.registrarFor("com.example.abstract_method_smoke_test") - .platformViewRegistry() - .registerViewFactory("simple", object : PlatformViewFactory(StandardMessageCodec.INSTANCE) { - override fun create(context: Context?, viewId: Int, args: Any?): PlatformView { + .platformViewRegistry() + .registerViewFactory( + "simple", + object : PlatformViewFactory(StandardMessageCodec.INSTANCE) { + override fun create( + context: Context?, + viewId: Int, + args: Any?, + ): PlatformView { return SimplePlatformView(this@MainActivity) } - }) + }, + ) // Triggers the Android keyboard, which causes the resize of the Flutter view. // We need to wait for the app to complete. MethodChannel(flutterEngine.getDartExecutor(), "com.example.abstract_method_smoke_test") - .setMethodCallHandler { _, result -> - toggleInput() - result.success(null) - } + .setMethodCallHandler { _, result -> + toggleInput() + result.success(null) + } } override fun onPause() { diff --git a/dev/integration_tests/android_embedding_v2_smoke_test/android/app/src/main/kotlin/com/example/android_embedding_v2_smoke_test/MainActivity.kt b/dev/integration_tests/android_embedding_v2_smoke_test/android/app/src/main/kotlin/com/example/android_embedding_v2_smoke_test/MainActivity.kt index b4675214f0a..a652f58f563 100644 --- a/dev/integration_tests/android_embedding_v2_smoke_test/android/app/src/main/kotlin/com/example/android_embedding_v2_smoke_test/MainActivity.kt +++ b/dev/integration_tests/android_embedding_v2_smoke_test/android/app/src/main/kotlin/com/example/android_embedding_v2_smoke_test/MainActivity.kt @@ -1,12 +1,14 @@ package com.example.android_embedding_v2_smoke_test -import androidx.annotation.NonNull; +import androidx.annotation.NonNull import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugins.GeneratedPluginRegistrant -class MainActivity: FlutterActivity() { - override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { - GeneratedPluginRegistrant.registerWith(flutterEngine); +class MainActivity : FlutterActivity() { + override fun configureFlutterEngine( + @NonNull flutterEngine: FlutterEngine, + ) { + GeneratedPluginRegistrant.registerWith(flutterEngine) } } diff --git a/dev/integration_tests/deferred_components_test/android/app/src/main/kotlin/io/flutter/integration/deferred_components_test/MainActivity.kt b/dev/integration_tests/deferred_components_test/android/app/src/main/kotlin/io/flutter/integration/deferred_components_test/MainActivity.kt index 64560befb8f..87008d9ff61 100644 --- a/dev/integration_tests/deferred_components_test/android/app/src/main/kotlin/io/flutter/integration/deferred_components_test/MainActivity.kt +++ b/dev/integration_tests/deferred_components_test/android/app/src/main/kotlin/io/flutter/integration/deferred_components_test/MainActivity.kt @@ -2,5 +2,4 @@ package io.flutter.integration.deferred_components_test import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity : FlutterActivity() diff --git a/dev/integration_tests/non_nullable/android/app/src/main/kotlin/com/example/non_nullable/MainActivity.kt b/dev/integration_tests/non_nullable/android/app/src/main/kotlin/com/example/non_nullable/MainActivity.kt index 60bdc72f0ad..c1f226c7d7f 100644 --- a/dev/integration_tests/non_nullable/android/app/src/main/kotlin/com/example/non_nullable/MainActivity.kt +++ b/dev/integration_tests/non_nullable/android/app/src/main/kotlin/com/example/non_nullable/MainActivity.kt @@ -2,5 +2,4 @@ package com.example.non_nullable import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity : FlutterActivity() diff --git a/dev/integration_tests/spell_check/android/app/src/main/kotlin/com/example/sc_int_test/MainActivity.kt b/dev/integration_tests/spell_check/android/app/src/main/kotlin/com/example/sc_int_test/MainActivity.kt index d7090d49c5c..511b48cb9f5 100644 --- a/dev/integration_tests/spell_check/android/app/src/main/kotlin/com/example/sc_int_test/MainActivity.kt +++ b/dev/integration_tests/spell_check/android/app/src/main/kotlin/com/example/sc_int_test/MainActivity.kt @@ -2,5 +2,4 @@ package com.example.spell_check import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity : FlutterActivity() diff --git a/dev/manual_tests/android/app/src/main/kotlin/dev/flutter/manual_tests/MainActivity.kt b/dev/manual_tests/android/app/src/main/kotlin/dev/flutter/manual_tests/MainActivity.kt index f2ca557a8c1..18fc2c07a01 100644 --- a/dev/manual_tests/android/app/src/main/kotlin/dev/flutter/manual_tests/MainActivity.kt +++ b/dev/manual_tests/android/app/src/main/kotlin/dev/flutter/manual_tests/MainActivity.kt @@ -2,5 +2,4 @@ package dev.flutter.manual_tests import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity : FlutterActivity() diff --git a/dev/tracing_tests/android/app/src/main/kotlin/com/example/tracing_tests/MainActivity.kt b/dev/tracing_tests/android/app/src/main/kotlin/com/example/tracing_tests/MainActivity.kt index a44690912ca..344ad1ecf79 100644 --- a/dev/tracing_tests/android/app/src/main/kotlin/com/example/tracing_tests/MainActivity.kt +++ b/dev/tracing_tests/android/app/src/main/kotlin/com/example/tracing_tests/MainActivity.kt @@ -2,5 +2,4 @@ package com.example.tracing_tests import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity : FlutterActivity() diff --git a/examples/api/android/app/src/main/kotlin/dev/flutter/flutter_api_samples/MainActivity.kt b/examples/api/android/app/src/main/kotlin/dev/flutter/flutter_api_samples/MainActivity.kt index 15226924578..68e62645ab4 100644 --- a/examples/api/android/app/src/main/kotlin/dev/flutter/flutter_api_samples/MainActivity.kt +++ b/examples/api/android/app/src/main/kotlin/dev/flutter/flutter_api_samples/MainActivity.kt @@ -2,5 +2,4 @@ package dev.flutter.flutter_api_samples import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity : FlutterActivity() diff --git a/examples/hello_world/android/build.gradle.kts b/examples/hello_world/android/build.gradle.kts index 14a09aa756a..e7755cd5f8d 100644 --- a/examples/hello_world/android/build.gradle.kts +++ b/examples/hello_world/android/build.gradle.kts @@ -24,7 +24,7 @@ subprojects { ignoredDependencies.add("io.flutter:*") lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") if (!project.hasProperty("local-engine-repo")) { - lockAllConfigurations() + lockAllConfigurations() } } } diff --git a/examples/hello_world/android/settings.gradle.kts b/examples/hello_world/android/settings.gradle.kts index 894a8a5f26c..b1a0c7d3234 100644 --- a/examples/hello_world/android/settings.gradle.kts +++ b/examples/hello_world/android/settings.gradle.kts @@ -7,13 +7,14 @@ // See #141540. pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") diff --git a/packages/flutter_tools/gradle/build.gradle.kts b/packages/flutter_tools/gradle/build.gradle.kts index c2ce5fff211..ebe4216b454 100644 --- a/packages/flutter_tools/gradle/build.gradle.kts +++ b/packages/flutter_tools/gradle/build.gradle.kts @@ -7,7 +7,6 @@ plugins { `groovy` } - group = "dev.flutter.plugin" version = "1.0.0" diff --git a/packages/flutter_tools/gradle/settings.gradle.kts b/packages/flutter_tools/gradle/settings.gradle.kts index f8d3e87ffa2..2b81856588a 100644 --- a/packages/flutter_tools/gradle/settings.gradle.kts +++ b/packages/flutter_tools/gradle/settings.gradle.kts @@ -1,7 +1,7 @@ dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) - repositories { - google() - mavenCentral() - } + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } } diff --git a/packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts b/packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts index 5dbffd815ca..fc94f57a773 100644 --- a/packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts +++ b/packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts @@ -33,50 +33,50 @@ class FlutterDependencyCheckerPlugin : Plugin { } } - class DependencyVersionChecker { companion object { - private const val GRADLE_NAME : String = "Gradle" - private const val JAVA_NAME : String = "Java" - private const val AGP_NAME : String = "Android Gradle Plugin" - private const val KGP_NAME : String = "Kotlin" + private const val GRADLE_NAME: String = "Gradle" + private const val JAVA_NAME: String = "Java" + private const val AGP_NAME: String = "Android Gradle Plugin" + private const val KGP_NAME: String = "Kotlin" // The following messages represent best effort guesses at where a Flutter developer should // look to upgrade a dependency that is below the corresponding threshold. Developers can // change some of these locations, so they are not guaranteed to be accurate. - private fun getPotentialGradleFix(projectDirectory : String) : String { + private fun getPotentialGradleFix(projectDirectory: String): String { return "Your project's gradle version is typically " + - "defined in the gradle wrapper file. By default, this can be found at " + - "$projectDirectory/gradle/wrapper/gradle-wrapper.properties. \n" + - "For more information, see https://docs.gradle.org/current/userguide/gradle_wrapper.html.\n" + "defined in the gradle wrapper file. By default, this can be found at " + + "$projectDirectory/gradle/wrapper/gradle-wrapper.properties. \n" + + "For more information, see https://docs.gradle.org/current/userguide/gradle_wrapper.html.\n" } // The potential java fix does not make use of the project directory, // so it left as a constant. - private const val POTENTIAL_JAVA_FIX : String = "The Java version used by Flutter can be " + + private const val POTENTIAL_JAVA_FIX: String = + "The Java version used by Flutter can be " + "set with `flutter config --jdk-dir=`. \nFor more information about how Flutter " + "chooses which version of Java to use, see the --jdk-dir section of the " + "output of `flutter config -h`.\n" - private fun getPotentialAGPFix(projectDirectory : String) : String { + private fun getPotentialAGPFix(projectDirectory: String): String { return "Your project's AGP version is typically " + - "defined the plugins block of the `settings.gradle` file " + - "($projectDirectory/settings.gradle), by a plugin with the id of " + - "com.android.application. \nIf you don't see a plugins block, your project " + - "was likely created with an older template version. In this case it is most " + - "likely defined in the top-level build.gradle file " + - "($projectDirectory/build.gradle) by the following line in the dependencies" + - " block of the buildscript: \"classpath 'com.android.tools.build:gradle:'\".\n" + "defined the plugins block of the `settings.gradle` file " + + "($projectDirectory/settings.gradle), by a plugin with the id of " + + "com.android.application. \nIf you don't see a plugins block, your project " + + "was likely created with an older template version. In this case it is most " + + "likely defined in the top-level build.gradle file " + + "($projectDirectory/build.gradle) by the following line in the dependencies" + + " block of the buildscript: \"classpath 'com.android.tools.build:gradle:'\".\n" } - private fun getPotentialKGPFix(projectDirectory : String) : String { + private fun getPotentialKGPFix(projectDirectory: String): String { return "Your project's KGP version is typically " + - "defined the plugins block of the `settings.gradle` file " + - "($projectDirectory/settings.gradle), by a plugin with the id of " + - "org.jetbrains.kotlin.android. \nIf you don't see a plugins block, your project " + - "was likely created with an older template version, in which case it is most " + - "likely defined in the top-level build.gradle file " + - "($projectDirectory/build.gradle) by the ext.kotlin_version property.\n" + "defined the plugins block of the `settings.gradle` file " + + "($projectDirectory/settings.gradle), by a plugin with the id of " + + "org.jetbrains.kotlin.android. \nIf you don't see a plugins block, your project " + + "was likely created with an older template version, in which case it is most " + + "likely defined in the top-level build.gradle file " + + "($projectDirectory/build.gradle) by the ext.kotlin_version property.\n" } // The following versions define our support policy for Gradle, Java, AGP, and KGP. @@ -86,26 +86,26 @@ class DependencyVersionChecker { // "warn" version for a full release to provide advanced warning. See // flutter.dev/go/android-dependency-versions for more. // TODO(gmackall): https://github.com/flutter/flutter/issues/142653. - val warnGradleVersion : Version = Version(7,0,2) - val errorGradleVersion : Version = Version(0,0,0) + val warnGradleVersion: Version = Version(7, 0, 2) + val errorGradleVersion: Version = Version(0, 0, 0) - val warnJavaVersion : JavaVersion = JavaVersion.VERSION_11 - val errorJavaVersion : JavaVersion = JavaVersion.VERSION_1_1 + val warnJavaVersion: JavaVersion = JavaVersion.VERSION_11 + val errorJavaVersion: JavaVersion = JavaVersion.VERSION_1_1 - val warnAGPVersion : Version = Version(7,0,0) - val errorAGPVersion : Version = Version(0,0,0) + val warnAGPVersion: Version = Version(7, 0, 0) + val errorAGPVersion: Version = Version(0, 0, 0) - val warnKGPVersion : Version = Version(1,5,0) - val errorKGPVersion : Version = Version(0,0,0) + val warnKGPVersion: Version = Version(1, 5, 0) + val errorKGPVersion: Version = Version(0, 0, 0) /** * Checks if the project's Android build time dependencies are each within the respective * version range that we support. When we can't find a version for a given dependency * we treat it as within the range for the purpose of this check. */ - fun checkDependencyVersions(project : Project) { - var agpVersion : Version? = null - var kgpVersion : Version? = null + fun checkDependencyVersions(project: Project) { + var agpVersion: Version? = null + var kgpVersion: Version? = null checkGradleVersion(getGradleVersion(project), project) checkJavaVersion(getJavaVersion(project), project) @@ -113,22 +113,26 @@ class DependencyVersionChecker { if (agpVersion != null) { checkAGPVersion(agpVersion, project) } else { - project.logger.error("Warning: unable to detect project AGP version. Skipping " + - "version checking. \nThis may be because you have applied AGP after the Flutter Gradle Plugin.") + project.logger.error( + "Warning: unable to detect project AGP version. Skipping " + + "version checking. \nThis may be because you have applied AGP after the Flutter Gradle Plugin.", + ) } kgpVersion = getKGPVersion(project) if (kgpVersion != null) { checkKGPVersion(kgpVersion, project) } else { - project.logger.error("Warning: unable to detect project KGP version. Skipping " + - "version checking. \nThis may be because you have applied KGP after the Flutter Gradle Plugin.") + project.logger.error( + "Warning: unable to detect project KGP version. Skipping " + + "version checking. \nThis may be because you have applied KGP after the Flutter Gradle Plugin.", + ) } } // https://docs.gradle.org/current/kotlin-dsl/gradle/org.gradle.api.invocation/-gradle/index.html#-837060600%2FFunctions%2F-1793262594 - fun getGradleVersion(project : Project) : Version { - val untrimmedGradleVersion : String = project.gradle.getGradleVersion() + fun getGradleVersion(project: Project): Version { + val untrimmedGradleVersion: String = project.gradle.getGradleVersion() // Trim to handle candidate gradle versions (example 7.6-rc-4). This means we treat all // candidate versions of gradle as the same as their base version // (i.e., "7.6"="7.6-rc-4"). @@ -136,49 +140,54 @@ class DependencyVersionChecker { } // https://docs.gradle.org/current/kotlin-dsl/gradle/org.gradle.api/-java-version/index.html#-1790786897%2FFunctions%2F-1793262594 - fun getJavaVersion(project : Project) : JavaVersion { + fun getJavaVersion(project: Project): JavaVersion { return JavaVersion.current() } // This approach is taken from AGP's own version checking plugin: // https://android.googlesource.com/platform/tools/base/+/1839aa23b8dc562005e2f0f0cc8e8b4c5caa37d0/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/utils/agpVersionChecker.kt#58. fun getAGPVersion(project: Project): Version? { - val agpPluginName : String = "com.android.base"; - val agpVersionFieldName : String = "ANDROID_GRADLE_PLUGIN_VERSION" + val agpPluginName: String = "com.android.base" + val agpVersionFieldName: String = "ANDROID_GRADLE_PLUGIN_VERSION" var agpVersion: Version? = null try { - agpVersion = Version.fromString( - project.plugins.getPlugin(agpPluginName)::class.java.classLoader.loadClass( - com.android.Version::class.java.name - ).fields.find { it.name == agpVersionFieldName }!! - .get(null) as String - ) + agpVersion = + Version.fromString( + project.plugins.getPlugin(agpPluginName)::class.java.classLoader.loadClass( + com.android.Version::class.java.name, + ).fields.find { it.name == agpVersionFieldName }!! + .get(null) as String, + ) } catch (ignored: ClassNotFoundException) { // Use deprecated Version class as it exists in older AGP (com.android.Version) does // not exist in those versions. - agpVersion = Version.fromString( - project.plugins.getPlugin(agpPluginName)::class.java.classLoader.loadClass( - com.android.builder.model.Version::class.java.name - ).fields.find { it.name == agpVersionFieldName }!! - .get(null) as String - ) + agpVersion = + Version.fromString( + project.plugins.getPlugin(agpPluginName)::class.java.classLoader.loadClass( + com.android.builder.model.Version::class.java.name, + ).fields.find { it.name == agpVersionFieldName }!! + .get(null) as String, + ) } return agpVersion } - fun getKGPVersion(project : Project) : Version? { - val kotlinVersionProperty : String = "kotlin_version" - val firstKotlinVersionFieldName : String = "pluginVersion" - val secondKotlinVersionFieldName : String = "kotlinPluginVersion" + fun getKGPVersion(project: Project): Version? { + val kotlinVersionProperty: String = "kotlin_version" + val firstKotlinVersionFieldName: String = "pluginVersion" + val secondKotlinVersionFieldName: String = "kotlinPluginVersion" // This property corresponds to application of the Kotlin Gradle plugin in the // top-level build.gradle file. if (project.hasProperty(kotlinVersionProperty)) { return Version.fromString(project.properties.get(kotlinVersionProperty) as String) } - val kotlinPlugin = project.getPlugins() - .findPlugin(KotlinAndroidPluginWrapper::class.java) + val kotlinPlugin = + project.getPlugins() + .findPlugin(KotlinAndroidPluginWrapper::class.java) val versionfield = - kotlinPlugin?.javaClass?.kotlin?.members?.first { it.name == firstKotlinVersionFieldName || it.name == secondKotlinVersionFieldName } + kotlinPlugin?.javaClass?.kotlin?.members?.first { + it.name == firstKotlinVersionFieldName || it.name == secondKotlinVersionFieldName + } val versionString = versionfield?.call(kotlinPlugin) if (versionString == null) { return null @@ -187,132 +196,152 @@ class DependencyVersionChecker { } } - private fun getErrorMessage(dependencyName : String, - versionString : String, - errorVersion : String, - potentialFix : String) : String { + private fun getErrorMessage( + dependencyName: String, + versionString: String, + errorVersion: String, + potentialFix: String, + ): String { return "Error: Your project's $dependencyName version ($versionString) is lower " + - "than Flutter's minimum supported version of $errorVersion. Please upgrade " + - "your $dependencyName version. \nAlternatively, use the flag " + - "\"--android-skip-build-dependency-validation\" to bypass this check.\n\n"+ - "Potential fix: $potentialFix" + "than Flutter's minimum supported version of $errorVersion. Please upgrade " + + "your $dependencyName version. \nAlternatively, use the flag " + + "\"--android-skip-build-dependency-validation\" to bypass this check.\n\n" + + "Potential fix: $potentialFix" } - private fun getWarnMessage(dependencyName : String, - versionString : String, - warnVersion : String, - potentialFix : String) : String { + private fun getWarnMessage( + dependencyName: String, + versionString: String, + warnVersion: String, + potentialFix: String, + ): String { return "Warning: Flutter support for your project's $dependencyName version " + - "($versionString) will soon be dropped. Please upgrade your $dependencyName " + - "version to a version of at least $warnVersion soon." + - "\nAlternatively, use the flag \"--android-skip-build-dependency-validation\"" + - " to bypass this check.\n\nPotential fix: $potentialFix" + "($versionString) will soon be dropped. Please upgrade your $dependencyName " + + "version to a version of at least $warnVersion soon." + + "\nAlternatively, use the flag \"--android-skip-build-dependency-validation\"" + + " to bypass this check.\n\nPotential fix: $potentialFix" } - fun checkGradleVersion(version : Version, project : Project) { + fun checkGradleVersion( + version: Version, + project: Project, + ) { if (version < errorGradleVersion) { - val errorMessage : String = getErrorMessage( - GRADLE_NAME, - version.toString(), - errorGradleVersion.toString(), - getPotentialGradleFix(project.getRootDir().getPath()) - ) + val errorMessage: String = + getErrorMessage( + GRADLE_NAME, + version.toString(), + errorGradleVersion.toString(), + getPotentialGradleFix(project.getRootDir().getPath()), + ) throw GradleException(errorMessage) - } - else if (version < warnGradleVersion) { - val warnMessage : String = getWarnMessage( - GRADLE_NAME, - version.toString(), - warnGradleVersion.toString(), - getPotentialGradleFix(project.getRootDir().getPath()) - ) + } else if (version < warnGradleVersion) { + val warnMessage: String = + getWarnMessage( + GRADLE_NAME, + version.toString(), + warnGradleVersion.toString(), + getPotentialGradleFix(project.getRootDir().getPath()), + ) project.logger.error(warnMessage) } } - fun checkJavaVersion(version : JavaVersion, project : Project) { + fun checkJavaVersion( + version: JavaVersion, + project: Project, + ) { if (version < errorJavaVersion) { - val errorMessage : String = getErrorMessage( - JAVA_NAME, - version.toString(), - errorJavaVersion.toString(), - POTENTIAL_JAVA_FIX - ) + val errorMessage: String = + getErrorMessage( + JAVA_NAME, + version.toString(), + errorJavaVersion.toString(), + POTENTIAL_JAVA_FIX, + ) throw GradleException(errorMessage) - } - else if (version < warnJavaVersion) { - val warnMessage : String = getWarnMessage( - JAVA_NAME, - version.toString(), - warnJavaVersion.toString(), - POTENTIAL_JAVA_FIX - ) + } else if (version < warnJavaVersion) { + val warnMessage: String = + getWarnMessage( + JAVA_NAME, + version.toString(), + warnJavaVersion.toString(), + POTENTIAL_JAVA_FIX, + ) project.logger.error(warnMessage) } } - fun checkAGPVersion(version : Version, project : Project) { + fun checkAGPVersion( + version: Version, + project: Project, + ) { if (version < errorAGPVersion) { - val errorMessage : String = getErrorMessage( - AGP_NAME, - version.toString(), - errorAGPVersion.toString(), - getPotentialAGPFix(project.getRootDir().getPath()) - ) + val errorMessage: String = + getErrorMessage( + AGP_NAME, + version.toString(), + errorAGPVersion.toString(), + getPotentialAGPFix(project.getRootDir().getPath()), + ) throw GradleException(errorMessage) - } - else if (version < warnAGPVersion) { - val warnMessage : String = getWarnMessage( - AGP_NAME, - version.toString(), - warnAGPVersion.toString(), - getPotentialAGPFix(project.getRootDir().getPath()) - ) + } else if (version < warnAGPVersion) { + val warnMessage: String = + getWarnMessage( + AGP_NAME, + version.toString(), + warnAGPVersion.toString(), + getPotentialAGPFix(project.getRootDir().getPath()), + ) project.logger.error(warnMessage) } } - fun checkKGPVersion(version : Version, project : Project) { + fun checkKGPVersion( + version: Version, + project: Project, + ) { if (version < errorKGPVersion) { - val errorMessage : String = getErrorMessage( - KGP_NAME, - version.toString(), - errorKGPVersion.toString(), - getPotentialKGPFix(project.getRootDir().getPath()) - ) + val errorMessage: String = + getErrorMessage( + KGP_NAME, + version.toString(), + errorKGPVersion.toString(), + getPotentialKGPFix(project.getRootDir().getPath()), + ) throw GradleException(errorMessage) - } - else if (version < warnKGPVersion) { - val warnMessage : String = getWarnMessage( - KGP_NAME, - version.toString(), - warnKGPVersion.toString(), - getPotentialKGPFix(project.getRootDir().getPath()) - ) + } else if (version < warnKGPVersion) { + val warnMessage: String = + getWarnMessage( + KGP_NAME, + version.toString(), + warnKGPVersion.toString(), + getPotentialKGPFix(project.getRootDir().getPath()), + ) project.logger.error(warnMessage) } } } } - // Helper class to parse the versions that are provided as plain strings (Gradle, Kotlin) and // perform easy comparisons. All versions will have a major, minor, and patch value. These values // default to 0 when they are not provided or are otherwise unparseable. // For example the version strings "8.2", "8.2.2hfd", and "8.2.0" would parse to the same version. -class Version(val major : Int, val minor : Int, val patch : Int) : Comparable { +class Version(val major: Int, val minor: Int, val patch: Int) : Comparable { companion object { - fun fromString(version : String) : Version { - val asList : List = version.split(".") - val convertedToNumbers : List = asList.map {it.toIntOrNull() ?: 0} + fun fromString(version: String): Version { + val asList: List = version.split(".") + val convertedToNumbers: List = asList.map { it.toIntOrNull() ?: 0 } return Version( - major = convertedToNumbers.getOrElse(0, {0}), - minor = convertedToNumbers.getOrElse(1, {0}), - patch = convertedToNumbers.getOrElse(2, {0}) + major = convertedToNumbers.getOrElse(0, { 0 }), + minor = convertedToNumbers.getOrElse(1, { 0 }), + patch = convertedToNumbers.getOrElse(2, { 0 }), ) } } - override fun compareTo(otherVersion : Version) : Int { + + override fun compareTo(otherVersion: Version): Int { if (major != otherVersion.major) { return major - otherVersion.major } @@ -324,7 +353,8 @@ class Version(val major : Int, val minor : Int, val patch : Int) : Comparable