mirror of
https://github.com/flutter/flutter
synced 2024-08-24 18:36:03 +00:00
Format all kotlin according to ktlint (#143390)
Entire pr generated with [ktlint](https://github.com/pinterest/ktlint) --format. First step before enabling linting as part of presubmit for kotlin changes.
This commit is contained in:
parent
dc1f9f183f
commit
c61dc2a586
|
@ -2,5 +2,4 @@ package com.example.a11y_assessments
|
|||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
||||
class MainActivity : FlutterActivity()
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,5 +2,4 @@ package io.flutter.integration.deferred_components_test
|
|||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
||||
class MainActivity : FlutterActivity()
|
||||
|
|
|
@ -2,5 +2,4 @@ package com.example.non_nullable
|
|||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
||||
class MainActivity : FlutterActivity()
|
||||
|
|
|
@ -2,5 +2,4 @@ package com.example.spell_check
|
|||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
||||
class MainActivity : FlutterActivity()
|
||||
|
|
|
@ -2,5 +2,4 @@ package dev.flutter.manual_tests
|
|||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
||||
class MainActivity : FlutterActivity()
|
||||
|
|
|
@ -2,5 +2,4 @@ package com.example.tracing_tests
|
|||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
||||
class MainActivity : FlutterActivity()
|
||||
|
|
|
@ -2,5 +2,4 @@ package dev.flutter.flutter_api_samples
|
|||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
||||
class MainActivity : FlutterActivity()
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@ plugins {
|
|||
`groovy`
|
||||
}
|
||||
|
||||
|
||||
group = "dev.flutter.plugin"
|
||||
version = "1.0.0"
|
||||
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,50 +33,50 @@ class FlutterDependencyCheckerPlugin : Plugin<Project> {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
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=<path>`. \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:<version>'\".\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:<version>'\".\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<Version> {
|
||||
class Version(val major: Int, val minor: Int, val patch: Int) : Comparable<Version> {
|
||||
companion object {
|
||||
fun fromString(version : String) : Version {
|
||||
val asList : List<String> = version.split(".")
|
||||
val convertedToNumbers : List<Int> = asList.map {it.toIntOrNull() ?: 0}
|
||||
fun fromString(version: String): Version {
|
||||
val asList: List<String> = version.split(".")
|
||||
val convertedToNumbers: List<Int> = 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<Ve
|
|||
}
|
||||
return 0
|
||||
}
|
||||
override fun toString() : String {
|
||||
|
||||
override fun toString(): String {
|
||||
return major.toString() + "." + minor.toString() + "." + patch.toString()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue