Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
ace3e58f
Unverified
Commit
ace3e58f
authored
Feb 12, 2024
by
Reid Baker
Committed by
GitHub
Feb 12, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "[Re-land] Enforce a policy on supported Gradle, Java, AGP, and KGP versions" (#143314)
Reverts flutter/flutter#143132
parent
1d25b0c7
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
4 additions
and
594 deletions
+4
-594
build.gradle
dev/integration_tests/ui/android/app/build.gradle
+1
-1
build.gradle.kts
packages/flutter_tools/gradle/build.gradle.kts
+2
-3
flutter.groovy
packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
+1
-26
dependency_version_checker.gradle.kts
...dle/src/main/kotlin/dependency_version_checker.gradle.kts
+0
-330
README.md
packages/flutter_tools/lib/src/android/README.md
+0
-5
gradle.dart
packages/flutter_tools/lib/src/android/gradle.dart
+0
-3
build_info.dart
packages/flutter_tools/lib/src/build_info.dart
+0
-5
flutter_command.dart
packages/flutter_tools/lib/src/runner/flutter_command.dart
+0
-11
build.gradle.tmpl
...plates/app_shared/android-java.tmpl/app/build.gradle.tmpl
+0
-1
build.gradle.tmpl
...ates/app_shared/android-kotlin.tmpl/app/build.gradle.tmpl
+0
-1
android_dependency_version_checking_test.dart
...ation.shard/android_dependency_version_checking_test.dart
+0
-208
No files found.
dev/integration_tests/ui/android/app/build.gradle
View file @
ace3e58f
...
@@ -4,8 +4,8 @@
...
@@ -4,8 +4,8 @@
plugins
{
plugins
{
id
"com.android.application"
id
"com.android.application"
id
"kotlin-android"
id
"dev.flutter.flutter-gradle-plugin"
id
"dev.flutter.flutter-gradle-plugin"
id
"kotlin-android"
}
}
android
{
android
{
...
...
packages/flutter_tools/gradle/build.gradle.kts
View file @
ace3e58f
...
@@ -28,9 +28,8 @@ gradlePlugin {
...
@@ -28,9 +28,8 @@ gradlePlugin {
dependencies
{
dependencies
{
// When bumping, also update:
// When bumping, also update:
// * ndkVersion in FlutterExtension in packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
// * ndkVersion in FlutterExtension in packages/flutter_tools/gradle/src/main/flutter.groovy
// * AGP version in the buildscript block in packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
// * AGP version in the buildscript block in packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts
// * AGP version constants in packages/flutter_tools/lib/src/android/gradle_utils.dart
// * AGP version constants in packages/flutter_tools/lib/src/android/gradle_utils.dart
// * AGP version in buildscript block in packages/flutter_tools/gradle/src/main/flutter.groovy
compileOnly
(
"com.android.tools.build:gradle:7.3.0"
)
compileOnly
(
"com.android.tools.build:gradle:7.3.0"
)
}
}
packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
View file @
ace3e58f
...
@@ -113,8 +113,7 @@ buildscript {
...
@@ -113,8 +113,7 @@ buildscript {
}
}
dependencies
{
dependencies
{
// When bumping, also update:
// When bumping, also update:
// * ndkVersion in FlutterExtension in packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
// * ndkVersion in FlutterExtension in packages/flutter_tools/gradle/src/main/flutter.groovy
// * AGP version in the buildscript block in packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts
// * AGP version constants in packages/flutter_tools/lib/src/android/gradle_utils.dart
// * AGP version constants in packages/flutter_tools/lib/src/android/gradle_utils.dart
// * AGP version in dependencies block in packages/flutter_tools/gradle/build.gradle.kts
// * AGP version in dependencies block in packages/flutter_tools/gradle/build.gradle.kts
classpath
(
"com.android.tools.build:gradle:7.3.0"
)
classpath
(
"com.android.tools.build:gradle:7.3.0"
)
...
@@ -322,28 +321,6 @@ class FlutterPlugin implements Plugin<Project> {
...
@@ -322,28 +321,6 @@ class FlutterPlugin implements Plugin<Project> {
String
flutterExecutableName
=
Os
.
isFamily
(
Os
.
FAMILY_WINDOWS
)
?
"flutter.bat"
:
"flutter"
String
flutterExecutableName
=
Os
.
isFamily
(
Os
.
FAMILY_WINDOWS
)
?
"flutter.bat"
:
"flutter"
flutterExecutable
=
Paths
.
get
(
flutterRoot
.
absolutePath
,
"bin"
,
flutterExecutableName
).
toFile
()
flutterExecutable
=
Paths
.
get
(
flutterRoot
.
absolutePath
,
"bin"
,
flutterExecutableName
).
toFile
()
// Validate that the provided Gradle, Java, AGP, and KGP versions are all within our
// supported range.
// TODO(gmackall) Dependency version checking is currently implemented as an additional
// Gradle plugin because we can't import it from Groovy code. As part of the Groovy
// -> Kotlin migration, we should remove this complexity and perform the checks inside
// of the main Flutter Gradle Plugin.
// See https://github.com/flutter/flutter/issues/121541#issuecomment-1920363687.
final
Boolean
shouldSkipDependencyChecks
=
project
.
hasProperty
(
"skipDependencyChecks"
)
&&
project
.
getProperty
(
"skipDependencyChecks"
);
if
(!
shouldSkipDependencyChecks
)
{
try
{
final
String
dependencyCheckerPluginPath
=
Paths
.
get
(
flutterRoot
.
absolutePath
,
"packages"
,
"flutter_tools"
,
"gradle"
,
"src"
,
"main"
,
"kotlin"
,
"dependency_version_checker.gradle.kts"
)
project
.
apply
from:
dependencyCheckerPluginPath
}
catch
(
Exception
ignored
)
{
project
.
logger
.
error
(
"Warning: Flutter was unable to detect project Gradle, Java, "
+
"AGP, and KGP versions. Skipping dependency version checking. Error was: "
+
ignored
)
}
}
// Use Kotlin DSL to handle baseApplicationName logic due to Groovy dynamic dispatch bug.
// Use Kotlin DSL to handle baseApplicationName logic due to Groovy dynamic dispatch bug.
project
.
apply
from:
Paths
.
get
(
flutterRoot
.
absolutePath
,
"packages"
,
"flutter_tools"
,
"gradle"
,
"src"
,
"main"
,
"kotlin"
,
"flutter.gradle.kts"
)
project
.
apply
from:
Paths
.
get
(
flutterRoot
.
absolutePath
,
"packages"
,
"flutter_tools"
,
"gradle"
,
"src"
,
"main"
,
"kotlin"
,
"flutter.gradle.kts"
)
...
@@ -1538,8 +1515,6 @@ abstract class BaseFlutterTask extends DefaultTask {
...
@@ -1538,8 +1515,6 @@ abstract class BaseFlutterTask extends DefaultTask {
@Optional
@Input
@Optional
@Input
Boolean
validateDeferredComponents
Boolean
validateDeferredComponents
@Optional
@Input
Boolean
skipDependencyChecks
@Optional
@Input
@Optional
@Input
String
flavor
String
flavor
...
...
packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts
deleted
100644 → 0
View file @
1d25b0c7
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import
org.gradle.api.JavaVersion
import
org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper
// This buildscript block supplies dependencies for this file's own import
// declarations above. It exists solely for compatibility with projects that
// have not migrated to declaratively apply the Flutter Gradle Plugin;
// for those that have, FGP's `build.gradle.kts` takes care of this.
buildscript
{
repositories
{
google
()
mavenCentral
()
}
dependencies
{
// When bumping, also update:
// * ndkVersion in FlutterExtension in packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
// * AGP version in the buildscript block in packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
// * AGP version constants in packages/flutter_tools/lib/src/android/gradle_utils.dart
// * AGP version in dependencies block in packages/flutter_tools/gradle/build.gradle.kts
classpath
(
"com.android.tools.build:gradle:7.3.0"
)
classpath
(
"org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10"
)
}
}
apply
<
FlutterDependencyCheckerPlugin
>()
class
FlutterDependencyCheckerPlugin
:
Plugin
<
Project
>
{
override
fun
apply
(
project
:
Project
)
{
DependencyVersionChecker
.
checkDependencyVersions
(
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"
// 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
{
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."
}
// 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 "
+
"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`."
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>'\"."
}
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."
}
// The following versions define our support policy for Gradle, Java, AGP, and KGP.
// All "error" versions are currently set to 0 as this policy is new. They will be increased
// to match the current values of the "warn" versions in the next release.
// Before updating any "error" version, ensure that you have updated the corresponding
// "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
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
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
checkGradleVersion
(
getGradleVersion
(
project
),
project
)
checkJavaVersion
(
getJavaVersion
(
project
),
project
)
agpVersion
=
getAGPVersion
(
project
)
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."
)
}
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."
)
}
}
// 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
()
// 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").
return
Version
.
fromString
(
untrimmedGradleVersion
.
substringBefore
(
'-'
))
}
// https://docs.gradle.org/current/kotlin-dsl/gradle/org.gradle.api/-java-version/index.html#-1790786897%2FFunctions%2F-1793262594
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"
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
)
}
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
)
}
return
agpVersion
}
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
versionfield
=
kotlinPlugin
?.
javaClass
?.
kotlin
?.
members
?.
first
{
it
.
name
==
firstKotlinVersionFieldName
||
it
.
name
==
secondKotlinVersionFieldName
}
val
versionString
=
versionfield
?.
call
(
kotlinPlugin
)
if
(
versionString
==
null
)
{
return
null
}
else
{
return
Version
.
fromString
(
versionString
!!
as
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"
}
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\n Potential fix: $potentialFix"
}
fun
checkGradleVersion
(
version
:
Version
,
project
:
Project
)
{
if
(
version
<
errorGradleVersion
)
{
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
())
)
project
.
logger
.
error
(
warnMessage
)
}
}
fun
checkJavaVersion
(
version
:
JavaVersion
,
project
:
Project
)
{
if
(
version
<
errorJavaVersion
)
{
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
)
project
.
logger
.
error
(
warnMessage
)
}
}
fun
checkAGPVersion
(
version
:
Version
,
project
:
Project
)
{
if
(
version
<
errorAGPVersion
)
{
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
())
)
project
.
logger
.
error
(
warnMessage
)
}
}
fun
checkKGPVersion
(
version
:
Version
,
project
:
Project
)
{
if
(
version
<
errorKGPVersion
)
{
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
())
)
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
>
{
companion
object
{
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
})
)
}
}
override
fun
compareTo
(
otherVersion
:
Version
)
:
Int
{
if
(
major
!=
otherVersion
.
major
)
{
return
major
-
otherVersion
.
major
}
if
(
minor
!=
otherVersion
.
minor
)
{
return
minor
-
otherVersion
.
minor
}
if
(
patch
!=
otherVersion
.
patch
)
{
return
patch
-
otherVersion
.
patch
}
return
0
}
override
fun
toString
()
:
String
{
return
major
.
toString
()
+
"."
+
minor
.
toString
()
+
"."
+
patch
.
toString
()
}
}
packages/flutter_tools/lib/src/android/README.md
View file @
ace3e58f
...
@@ -29,11 +29,6 @@ version.
...
@@ -29,11 +29,6 @@ version.
SDK versions are updated (you should see these fail if you do not fix them
SDK versions are updated (you should see these fail if you do not fix them
preemptively).
preemptively).
Also, make sure to also update to the same version in the following places:
-
The version in the buildscript block in
`packages/flutter_tools/gradle/src/main/groovy/flutter.groovy`
.
-
The version in the buildscript block in
`packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts`
.
-
The version in the dependencies block in
`packages/flutter_tools/gradle/build.gradle.kts`
.
#### Gradle
#### Gradle
When updating the Gradle version used in project templates
When updating the Gradle version used in project templates
(
`templateDefaultGradleVersion`
), make sure that:
(
`templateDefaultGradleVersion`
), make sure that:
...
...
packages/flutter_tools/lib/src/android/gradle.dart
View file @
ace3e58f
...
@@ -370,9 +370,6 @@ class AndroidGradleBuilder implements AndroidBuilder {
...
@@ -370,9 +370,6 @@ class AndroidGradleBuilder implements AndroidBuilder {
if
(!
buildInfo
.
androidGradleDaemon
)
{
if
(!
buildInfo
.
androidGradleDaemon
)
{
command
.
add
(
'--no-daemon'
);
command
.
add
(
'--no-daemon'
);
}
}
if
(
buildInfo
.
androidSkipBuildDependencyValidation
)
{
command
.
add
(
'-PskipDependencyChecks=true'
);
}
final
LocalEngineInfo
?
localEngineInfo
=
_artifacts
.
localEngineInfo
;
final
LocalEngineInfo
?
localEngineInfo
=
_artifacts
.
localEngineInfo
;
if
(
localEngineInfo
!=
null
)
{
if
(
localEngineInfo
!=
null
)
{
final
Directory
localEngineRepo
=
_getLocalEngineRepo
(
final
Directory
localEngineRepo
=
_getLocalEngineRepo
(
...
...
packages/flutter_tools/lib/src/build_info.dart
View file @
ace3e58f
...
@@ -43,7 +43,6 @@ class BuildInfo {
...
@@ -43,7 +43,6 @@ class BuildInfo {
this
.
nullSafetyMode
=
NullSafetyMode
.
sound
,
this
.
nullSafetyMode
=
NullSafetyMode
.
sound
,
this
.
codeSizeDirectory
,
this
.
codeSizeDirectory
,
this
.
androidGradleDaemon
=
true
,
this
.
androidGradleDaemon
=
true
,
this
.
androidSkipBuildDependencyValidation
=
false
,
this
.
packageConfig
=
PackageConfig
.
empty
,
this
.
packageConfig
=
PackageConfig
.
empty
,
this
.
initializeFromDill
,
this
.
initializeFromDill
,
this
.
assumeInitializeFromDillUpToDate
=
false
,
this
.
assumeInitializeFromDillUpToDate
=
false
,
...
@@ -159,10 +158,6 @@ class BuildInfo {
...
@@ -159,10 +158,6 @@ class BuildInfo {
/// The Gradle daemon may also be disabled in the Android application's properties file.
/// The Gradle daemon may also be disabled in the Android application's properties file.
final
bool
androidGradleDaemon
;
final
bool
androidGradleDaemon
;
/// Whether to skip checking of individual versions of our Android build time
/// dependencies.
final
bool
androidSkipBuildDependencyValidation
;
/// Additional key value pairs that are passed directly to the gradle project via the `-P`
/// Additional key value pairs that are passed directly to the gradle project via the `-P`
/// flag.
/// flag.
final
List
<
String
>
androidProjectArgs
;
final
List
<
String
>
androidProjectArgs
;
...
...
packages/flutter_tools/lib/src/runner/flutter_command.dart
View file @
ace3e58f
...
@@ -147,7 +147,6 @@ abstract final class FlutterOptions {
...
@@ -147,7 +147,6 @@ abstract final class FlutterOptions {
static
const
String
kAndroidGradleDaemon
=
'android-gradle-daemon'
;
static
const
String
kAndroidGradleDaemon
=
'android-gradle-daemon'
;
static
const
String
kDeferredComponents
=
'deferred-components'
;
static
const
String
kDeferredComponents
=
'deferred-components'
;
static
const
String
kAndroidProjectArgs
=
'android-project-arg'
;
static
const
String
kAndroidProjectArgs
=
'android-project-arg'
;
static
const
String
kAndroidSkipBuildDependencyValidation
=
'android-skip-build-dependency-validation'
;
static
const
String
kInitializeFromDill
=
'initialize-from-dill'
;
static
const
String
kInitializeFromDill
=
'initialize-from-dill'
;
static
const
String
kAssumeInitializeFromDillUpToDate
=
'assume-initialize-from-dill-up-to-date'
;
static
const
String
kAssumeInitializeFromDillUpToDate
=
'assume-initialize-from-dill-up-to-date'
;
static
const
String
kNativeAssetsYamlFile
=
'native-assets-yaml-file'
;
static
const
String
kNativeAssetsYamlFile
=
'native-assets-yaml-file'
;
...
@@ -975,12 +974,6 @@ abstract class FlutterCommand extends Command<void> {
...
@@ -975,12 +974,6 @@ abstract class FlutterCommand extends Command<void> {
defaultsTo:
true
,
defaultsTo:
true
,
hide:
hide
,
hide:
hide
,
);
);
argParser
.
addFlag
(
FlutterOptions
.
kAndroidSkipBuildDependencyValidation
,
help:
'Whether to skip version checking for Java, Gradle, '
'the Android Gradle Plugin (AGP), and the Kotlin Gradle Plugin (KGP)'
' during Android builds.'
,
);
argParser
.
addMultiOption
(
argParser
.
addMultiOption
(
FlutterOptions
.
kAndroidProjectArgs
,
FlutterOptions
.
kAndroidProjectArgs
,
help:
'Additional arguments specified as key=value that are passed directly to the gradle '
help:
'Additional arguments specified as key=value that are passed directly to the gradle '
...
@@ -1235,9 +1228,6 @@ abstract class FlutterCommand extends Command<void> {
...
@@ -1235,9 +1228,6 @@ abstract class FlutterCommand extends Command<void> {
final
bool
androidGradleDaemon
=
!
argParser
.
options
.
containsKey
(
FlutterOptions
.
kAndroidGradleDaemon
)
final
bool
androidGradleDaemon
=
!
argParser
.
options
.
containsKey
(
FlutterOptions
.
kAndroidGradleDaemon
)
||
boolArg
(
FlutterOptions
.
kAndroidGradleDaemon
);
||
boolArg
(
FlutterOptions
.
kAndroidGradleDaemon
);
final
bool
androidSkipBuildDependencyValidation
=
!
argParser
.
options
.
containsKey
(
FlutterOptions
.
kAndroidSkipBuildDependencyValidation
)
||
boolArg
(
FlutterOptions
.
kAndroidSkipBuildDependencyValidation
);
final
List
<
String
>
androidProjectArgs
=
argParser
.
options
.
containsKey
(
FlutterOptions
.
kAndroidProjectArgs
)
final
List
<
String
>
androidProjectArgs
=
argParser
.
options
.
containsKey
(
FlutterOptions
.
kAndroidProjectArgs
)
?
stringsArg
(
FlutterOptions
.
kAndroidProjectArgs
)
?
stringsArg
(
FlutterOptions
.
kAndroidProjectArgs
)
:
<
String
>[];
:
<
String
>[];
...
@@ -1333,7 +1323,6 @@ abstract class FlutterCommand extends Command<void> {
...
@@ -1333,7 +1323,6 @@ abstract class FlutterCommand extends Command<void> {
nullSafetyMode:
nullSafetyMode
,
nullSafetyMode:
nullSafetyMode
,
codeSizeDirectory:
codeSizeDirectory
,
codeSizeDirectory:
codeSizeDirectory
,
androidGradleDaemon:
androidGradleDaemon
,
androidGradleDaemon:
androidGradleDaemon
,
androidSkipBuildDependencyValidation:
androidSkipBuildDependencyValidation
,
packageConfig:
packageConfig
,
packageConfig:
packageConfig
,
androidProjectArgs:
androidProjectArgs
,
androidProjectArgs:
androidProjectArgs
,
initializeFromDill:
argParser
.
options
.
containsKey
(
FlutterOptions
.
kInitializeFromDill
)
initializeFromDill:
argParser
.
options
.
containsKey
(
FlutterOptions
.
kInitializeFromDill
)
...
...
packages/flutter_tools/templates/app_shared/android-java.tmpl/app/build.gradle.tmpl
View file @
ace3e58f
plugins {
plugins {
id "com.android.application"
id "com.android.application"
id "kotlin-android"
id "kotlin-android"
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id "dev.flutter.flutter-gradle-plugin"
id "dev.flutter.flutter-gradle-plugin"
}
}
...
...
packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/app/build.gradle.tmpl
View file @
ace3e58f
plugins {
plugins {
id "com.android.application"
id "com.android.application"
id "kotlin-android"
id "kotlin-android"
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id "dev.flutter.flutter-gradle-plugin"
id "dev.flutter.flutter-gradle-plugin"
}
}
...
...
packages/flutter_tools/test/android_preview_integration.shard/android_dependency_version_checking_test.dart
deleted
100644 → 0
View file @
1d25b0c7
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import
'dart:io'
;
import
'package:file/src/interface/file_system_entity.dart'
;
import
'../integration.shard/test_utils.dart'
;
import
'../src/common.dart'
;
import
'../src/context.dart'
;
const
String
gradleSettingsFileContent
=
r''
'
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 "AGP_REPLACE_ME" apply false
id "org.jetbrains.kotlin.android" version "KGP_REPLACE_ME" apply false
}
include ":app"
'''
;
const
String
agpReplacementString
=
'AGP_REPLACE_ME'
;
const
String
kgpReplacementString
=
'KGP_REPLACE_ME'
;
const
String
gradleWrapperPropertiesFileContent
=
r''
'
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https
\
://services.gradle.org/distributions/gradle-GRADLE_REPLACE_ME-all.zip
'''
;
const
String
gradleReplacementString
=
'GRADLE_REPLACE_ME'
;
// This test is currently on the preview shard (but not using the preview
// version of Android) because it is the only one using Java 11. This test
// requires Java 11 due to the intentionally low version of Gradle.
void
main
(
)
{
late
Directory
tempDir
;
setUpAll
(()
async
{
tempDir
=
createResolvedTempDirectorySync
(
'run_test.'
);
});
tearDownAll
(()
async
{
tryToDelete
(
tempDir
as
FileSystemEntity
);
});
testUsingContext
(
'AGP version out of "warn" support band prints warning but still builds'
,
()
async
{
// Create a new flutter project.
final
String
flutterBin
=
fileSystem
.
path
.
join
(
getFlutterRoot
(),
'bin'
,
'flutter'
);
ProcessResult
result
=
await
processManager
.
run
(<
String
>[
flutterBin
,
'create'
,
'dependency_checker_app'
,
'--platforms=android'
,
],
workingDirectory:
tempDir
.
path
);
expect
(
result
,
const
ProcessResultMatcher
());
const
String
gradleVersion
=
'7.5'
;
const
String
agpVersion
=
'4.2.0'
;
const
String
kgpVersion
=
'1.7.10'
;
final
Directory
app
=
Directory
(
fileSystem
.
path
.
join
(
tempDir
.
path
,
'dependency_checker_app'
));
// Modify gradle version to passed in version.
final
File
gradleWrapperProperties
=
File
(
fileSystem
.
path
.
join
(
app
.
path
,
'android'
,
'gradle'
,
'wrapper'
,
'gradle-wrapper.properties'
));
final
String
propertyContent
=
gradleWrapperPropertiesFileContent
.
replaceFirst
(
gradleReplacementString
,
gradleVersion
,
);
await
gradleWrapperProperties
.
writeAsString
(
propertyContent
,
flush:
true
);
final
File
gradleSettings
=
File
(
fileSystem
.
path
.
join
(
app
.
path
,
'android'
,
'settings.gradle'
));
final
String
settingsContent
=
gradleSettingsFileContent
.
replaceFirst
(
agpReplacementString
,
agpVersion
)
.
replaceFirst
(
kgpReplacementString
,
kgpVersion
);
await
gradleSettings
.
writeAsString
(
settingsContent
,
flush:
true
);
// Ensure that gradle files exists from templates.
result
=
await
processManager
.
run
(<
String
>[
flutterBin
,
'build'
,
'apk'
,
'--debug'
,
],
workingDirectory:
app
.
path
);
expect
(
result
,
const
ProcessResultMatcher
());
expect
(
result
.
stderr
,
contains
(
'Please upgrade your Android Gradle '
'Plugin version'
));
});
testUsingContext
(
'Gradle version out of "warn" support band prints warning but still builds'
,
()
async
{
// Create a new flutter project.
final
String
flutterBin
=
fileSystem
.
path
.
join
(
getFlutterRoot
(),
'bin'
,
'flutter'
);
ProcessResult
result
=
await
processManager
.
run
(<
String
>[
flutterBin
,
'create'
,
'dependency_checker_app'
,
'--platforms=android'
,
],
workingDirectory:
tempDir
.
path
);
expect
(
result
,
const
ProcessResultMatcher
());
const
String
gradleVersion
=
'7.0'
;
const
String
agpVersion
=
'4.2.0'
;
const
String
kgpVersion
=
'1.7.10'
;
final
Directory
app
=
Directory
(
fileSystem
.
path
.
join
(
tempDir
.
path
,
'dependency_checker_app'
));
// Modify gradle version to passed in version.
final
File
gradleWrapperProperties
=
File
(
fileSystem
.
path
.
join
(
app
.
path
,
'android'
,
'gradle'
,
'wrapper'
,
'gradle-wrapper.properties'
));
final
String
propertyContent
=
gradleWrapperPropertiesFileContent
.
replaceFirst
(
gradleReplacementString
,
gradleVersion
,
);
await
gradleWrapperProperties
.
writeAsString
(
propertyContent
,
flush:
true
);
final
File
gradleSettings
=
File
(
fileSystem
.
path
.
join
(
app
.
path
,
'android'
,
'settings.gradle'
));
final
String
settingsContent
=
gradleSettingsFileContent
.
replaceFirst
(
agpReplacementString
,
agpVersion
)
.
replaceFirst
(
kgpReplacementString
,
kgpVersion
);
await
gradleSettings
.
writeAsString
(
settingsContent
,
flush:
true
);
// Ensure that gradle files exists from templates.
result
=
await
processManager
.
run
(<
String
>[
flutterBin
,
'build'
,
'apk'
,
'--debug'
,
],
workingDirectory:
app
.
path
);
expect
(
result
,
const
ProcessResultMatcher
());
expect
(
result
.
stderr
,
contains
(
'Please upgrade your Gradle version'
));
});
testUsingContext
(
'Kotlin version out of "warn" support band prints warning but still builds'
,
()
async
{
// Create a new flutter project.
final
String
flutterBin
=
fileSystem
.
path
.
join
(
getFlutterRoot
(),
'bin'
,
'flutter'
);
ProcessResult
result
=
await
processManager
.
run
(<
String
>[
flutterBin
,
'create'
,
'dependency_checker_app'
,
'--platforms=android'
,
],
workingDirectory:
tempDir
.
path
);
expect
(
result
,
const
ProcessResultMatcher
());
const
String
gradleVersion
=
'7.5'
;
const
String
agpVersion
=
'7.4.0'
;
const
String
kgpVersion
=
'1.4.10'
;
final
Directory
app
=
Directory
(
fileSystem
.
path
.
join
(
tempDir
.
path
,
'dependency_checker_app'
));
// Modify gradle version to passed in version.
final
File
gradleWrapperProperties
=
File
(
fileSystem
.
path
.
join
(
app
.
path
,
'android'
,
'gradle'
,
'wrapper'
,
'gradle-wrapper.properties'
));
final
String
propertyContent
=
gradleWrapperPropertiesFileContent
.
replaceFirst
(
gradleReplacementString
,
gradleVersion
,
);
await
gradleWrapperProperties
.
writeAsString
(
propertyContent
,
flush:
true
);
final
File
gradleSettings
=
File
(
fileSystem
.
path
.
join
(
app
.
path
,
'android'
,
'settings.gradle'
));
final
String
settingsContent
=
gradleSettingsFileContent
.
replaceFirst
(
agpReplacementString
,
agpVersion
)
.
replaceFirst
(
kgpReplacementString
,
kgpVersion
);
await
gradleSettings
.
writeAsString
(
settingsContent
,
flush:
true
);
// Ensure that gradle files exists from templates.
result
=
await
processManager
.
run
(<
String
>[
flutterBin
,
'build'
,
'apk'
,
'--debug'
,
],
workingDirectory:
app
.
path
);
expect
(
result
,
const
ProcessResultMatcher
());
expect
(
result
.
stderr
,
contains
(
'Please upgrade your Kotlin version'
));
});
// TODO(gmackall): Add tests for build blocking when the
// corresponding error versions are enabled.
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment