[CP] Gradle 8.0 support in flutter 3.7 (#124990)

Pull the minimal set of changes from flutter 3.10 (in beta) into flutter
3.7 to support gradle 8.0
[124838](https://github.com/flutter/flutter/issues/124838)

[Original PR](https://github.com/flutter/flutter/pull/121958)
## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] All existing and new tests are passing.

---------

Co-authored-by: André Sousa <andrelvsousa@gmail.com>
diff --git a/dev/benchmarks/complex_layout/android/build.gradle b/dev/benchmarks/complex_layout/android/build.gradle
index ee45d79..08a5807 100644
--- a/dev/benchmarks/complex_layout/android/build.gradle
+++ b/dev/benchmarks/complex_layout/android/build.gradle
@@ -14,7 +14,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:7.2.0'
+        classpath 'com.android.tools.build:gradle:7.3.0'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
     }
 
diff --git a/dev/benchmarks/complex_layout/android/buildscript-gradle.lockfile b/dev/benchmarks/complex_layout/android/buildscript-gradle.lockfile
index c8453f2..eb60580 100644
--- a/dev/benchmarks/complex_layout/android/buildscript-gradle.lockfile
+++ b/dev/benchmarks/complex_layout/android/buildscript-gradle.lockfile
@@ -1,69 +1,62 @@
 # This is a Gradle generated file for dependency locking.
 # Manual edits can break the build and are not advised.
 # This file is expected to be part of source control.
-androidx.databinding:databinding-common:7.2.0=classpath
-androidx.databinding:databinding-compiler-common:7.2.0=classpath
-com.android.databinding:baseLibrary:7.2.0=classpath
-com.android.tools.analytics-library:crash:30.2.0=classpath
-com.android.tools.analytics-library:protos:30.2.0=classpath
-com.android.tools.analytics-library:shared:30.2.0=classpath
-com.android.tools.analytics-library:tracker:30.2.0=classpath
-com.android.tools.build.jetifier:jetifier-core:1.0.0-beta09=classpath
-com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta09=classpath
-com.android.tools.build:aapt2-proto:7.2.0-7984345=classpath
-com.android.tools.build:aaptcompiler:7.2.0=classpath
-com.android.tools.build:apksig:7.2.0=classpath
-com.android.tools.build:apkzlib:7.2.0=classpath
-com.android.tools.build:builder-model:7.2.0=classpath
-com.android.tools.build:builder-test-api:7.2.0=classpath
-com.android.tools.build:builder:7.2.0=classpath
-com.android.tools.build:bundletool:1.8.2=classpath
-com.android.tools.build:gradle-api:7.2.0=classpath
-com.android.tools.build:gradle:7.2.0=classpath
-com.android.tools.build:manifest-merger:30.2.0=classpath
+androidx.databinding:databinding-common:7.3.0=classpath
+androidx.databinding:databinding-compiler-common:7.3.0=classpath
+com.android.databinding:baseLibrary:7.3.0=classpath
+com.android.tools.analytics-library:crash:30.3.0=classpath
+com.android.tools.analytics-library:protos:30.3.0=classpath
+com.android.tools.analytics-library:shared:30.3.0=classpath
+com.android.tools.analytics-library:tracker:30.3.0=classpath
+com.android.tools.build.jetifier:jetifier-core:1.0.0-beta10=classpath
+com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta10=classpath
+com.android.tools.build:aapt2-proto:7.3.0-8691043=classpath
+com.android.tools.build:aaptcompiler:7.3.0=classpath
+com.android.tools.build:apksig:7.3.0=classpath
+com.android.tools.build:apkzlib:7.3.0=classpath
+com.android.tools.build:builder-model:7.3.0=classpath
+com.android.tools.build:builder-test-api:7.3.0=classpath
+com.android.tools.build:builder:7.3.0=classpath
+com.android.tools.build:bundletool:1.9.0=classpath
+com.android.tools.build:gradle-api:7.3.0=classpath
+com.android.tools.build:gradle:7.3.0=classpath
+com.android.tools.build:manifest-merger:30.3.0=classpath
 com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api=classpath
-com.android.tools.ddms:ddmlib:30.2.0=classpath
-com.android.tools.layoutlib:layoutlib-api:30.2.0=classpath
-com.android.tools.lint:lint-model:30.2.0=classpath
-com.android.tools.lint:lint-typedef-remover:30.2.0=classpath
-com.android.tools.utp:android-device-provider-ddmlib-proto:30.2.0=classpath
-com.android.tools.utp:android-device-provider-gradle-proto:30.2.0=classpath
-com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:30.2.0=classpath
-com.android.tools.utp:android-test-plugin-host-coverage-proto:30.2.0=classpath
-com.android.tools.utp:android-test-plugin-host-retention-proto:30.2.0=classpath
-com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:30.2.0=classpath
-com.android.tools:annotations:30.2.0=classpath
-com.android.tools:common:30.2.0=classpath
-com.android.tools:dvlib:30.2.0=classpath
-com.android.tools:repository:30.2.0=classpath
-com.android.tools:sdk-common:30.2.0=classpath
-com.android.tools:sdklib:30.2.0=classpath
-com.android:signflinger:7.2.0=classpath
-com.android:zipflinger:7.2.0=classpath
-com.fasterxml.jackson.core:jackson-annotations:2.11.1=classpath
-com.fasterxml.jackson.core:jackson-core:2.11.1=classpath
-com.fasterxml.jackson.core:jackson-databind:2.11.1=classpath
-com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.1=classpath
-com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.11.1=classpath
-com.fasterxml.jackson.module:jackson-module-kotlin:2.11.1=classpath
-com.fasterxml.woodstox:woodstox-core:6.2.1=classpath
+com.android.tools.ddms:ddmlib:30.3.0=classpath
+com.android.tools.layoutlib:layoutlib-api:30.3.0=classpath
+com.android.tools.lint:lint-model:30.3.0=classpath
+com.android.tools.lint:lint-typedef-remover:30.3.0=classpath
+com.android.tools.utp:android-device-provider-ddmlib-proto:30.3.0=classpath
+com.android.tools.utp:android-device-provider-gradle-proto:30.3.0=classpath
+com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:30.3.0=classpath
+com.android.tools.utp:android-test-plugin-host-coverage-proto:30.3.0=classpath
+com.android.tools.utp:android-test-plugin-host-retention-proto:30.3.0=classpath
+com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:30.3.0=classpath
+com.android.tools:annotations:30.3.0=classpath
+com.android.tools:common:30.3.0=classpath
+com.android.tools:dvlib:30.3.0=classpath
+com.android.tools:repository:30.3.0=classpath
+com.android.tools:sdk-common:30.3.0=classpath
+com.android.tools:sdklib:30.3.0=classpath
+com.android:signflinger:7.3.0=classpath
+com.android:zipflinger:7.3.0=classpath
 com.github.gundy:semver4j:0.16.4=classpath
 com.google.android:annotations:4.1.1.4=classpath
-com.google.api.grpc:proto-google-common-protos:1.12.0=classpath
+com.google.api.grpc:proto-google-common-protos:2.0.1=classpath
 com.google.auto.value:auto-value-annotations:1.6.2=classpath
 com.google.code.findbugs:jsr305:3.0.2=classpath
 com.google.code.gson:gson:2.8.9=classpath
 com.google.crypto.tink:tink:1.3.0-rc2=classpath
 com.google.dagger:dagger:2.28.3=classpath
-com.google.errorprone:error_prone_annotations:2.3.4=classpath
+com.google.errorprone:error_prone_annotations:2.4.0=classpath
 com.google.flatbuffers:flatbuffers-java:1.12.0=classpath
 com.google.guava:failureaccess:1.0.1=classpath
 com.google.guava:guava:30.1-jre=classpath
 com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=classpath
 com.google.j2objc:j2objc-annotations:1.3=classpath
 com.google.jimfs:jimfs:1.1=classpath
-com.google.protobuf:protobuf-java-util:3.10.0=classpath
-com.google.protobuf:protobuf-java:3.10.0=classpath
+com.google.protobuf:protobuf-java-util:3.17.2=classpath
+com.google.protobuf:protobuf-java:3.17.2=classpath
 com.google.testing.platform:core-proto:0.0.8-alpha07=classpath
 com.googlecode.json-simple:json-simple:1.1=classpath
 com.googlecode.juniversalchardet:juniversalchardet:1.0.3=classpath
@@ -76,47 +69,45 @@
 commons-io:commons-io:2.4=classpath
 commons-logging:commons-logging:1.2=classpath
 de.undercouch:gradle-download-task:4.1.1=classpath
-io.grpc:grpc-api:1.21.1=classpath
-io.grpc:grpc-context:1.21.1=classpath
-io.grpc:grpc-core:1.21.1=classpath
-io.grpc:grpc-netty:1.21.1=classpath
-io.grpc:grpc-protobuf-lite:1.21.1=classpath
-io.grpc:grpc-protobuf:1.21.1=classpath
-io.grpc:grpc-stub:1.21.1=classpath
-io.netty:netty-buffer:4.1.34.Final=classpath
-io.netty:netty-codec-http2:4.1.34.Final=classpath
-io.netty:netty-codec-http:4.1.34.Final=classpath
-io.netty:netty-codec-socks:4.1.34.Final=classpath
-io.netty:netty-codec:4.1.34.Final=classpath
-io.netty:netty-common:4.1.34.Final=classpath
-io.netty:netty-handler-proxy:4.1.34.Final=classpath
-io.netty:netty-handler:4.1.34.Final=classpath
-io.netty:netty-resolver:4.1.34.Final=classpath
-io.netty:netty-transport:4.1.34.Final=classpath
-io.opencensus:opencensus-api:0.21.0=classpath
-io.opencensus:opencensus-contrib-grpc-metrics:0.21.0=classpath
+io.grpc:grpc-api:1.39.0=classpath
+io.grpc:grpc-context:1.39.0=classpath
+io.grpc:grpc-core:1.39.0=classpath
+io.grpc:grpc-netty:1.39.0=classpath
+io.grpc:grpc-protobuf-lite:1.39.0=classpath
+io.grpc:grpc-protobuf:1.39.0=classpath
+io.grpc:grpc-stub:1.39.0=classpath
+io.netty:netty-buffer:4.1.52.Final=classpath
+io.netty:netty-codec-http2:4.1.52.Final=classpath
+io.netty:netty-codec-http:4.1.52.Final=classpath
+io.netty:netty-codec-socks:4.1.52.Final=classpath
+io.netty:netty-codec:4.1.52.Final=classpath
+io.netty:netty-common:4.1.52.Final=classpath
+io.netty:netty-handler-proxy:4.1.52.Final=classpath
+io.netty:netty-handler:4.1.52.Final=classpath
+io.netty:netty-resolver:4.1.52.Final=classpath
+io.netty:netty-transport:4.1.52.Final=classpath
+io.perfmark:perfmark-api:0.23.0=classpath
 it.unimi.dsi:fastutil:8.4.0=classpath
 jakarta.activation:jakarta.activation-api:1.2.1=classpath
 jakarta.xml.bind:jakarta.xml.bind-api:2.3.2=classpath
+javax.annotation:javax.annotation-api:1.3.2=classpath
 javax.inject:javax.inject:1=classpath
 net.java.dev.jna:jna-platform:5.6.0=classpath
 net.java.dev.jna:jna:5.6.0=classpath
 net.sf.jopt-simple:jopt-simple:4.9=classpath
 net.sf.kxml:kxml2:2.3.0=classpath
 org.apache.commons:commons-compress:1.20=classpath
-org.apache.httpcomponents:httpclient:4.5.9=classpath
-org.apache.httpcomponents:httpcore:4.4.11=classpath
+org.apache.httpcomponents:httpclient:4.5.13=classpath
+org.apache.httpcomponents:httpcore:4.4.13=classpath
 org.apache.httpcomponents:httpmime:4.5.6=classpath
 org.bitbucket.b_c:jose4j:0.7.0=classpath
-org.bouncycastle:bcpkix-jdk15on:1.56=classpath
-org.bouncycastle:bcprov-jdk15on:1.56=classpath
+org.bouncycastle:bcpkix-jdk15on:1.67=classpath
+org.bouncycastle:bcprov-jdk15on:1.67=classpath
 org.checkerframework:checker-qual:3.5.0=classpath
-org.codehaus.mojo:animal-sniffer-annotations:1.17=classpath
-org.codehaus.woodstox:stax2-api:4.2.1=classpath
+org.codehaus.mojo:animal-sniffer-annotations:1.19=classpath
 org.glassfish.jaxb:jaxb-runtime:2.3.2=classpath
 org.glassfish.jaxb:txw2:2.3.2=classpath
 org.jdom:jdom2:2.0.6=classpath
-org.jetbrains.dokka:dokka-core:1.4.32=classpath
 org.jetbrains.intellij.deps:trove4j:1.0.20200330=classpath
 org.jetbrains.kotlin:kotlin-android-extensions:1.7.10=classpath
 org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.10=classpath
@@ -146,12 +137,8 @@
 org.jetbrains.kotlin:kotlin-util-io:1.7.10=classpath
 org.jetbrains.kotlin:kotlin-util-klib:1.7.10=classpath
 org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath
-org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1=classpath
 org.jetbrains:annotations:13.0=classpath
-org.jetbrains:markdown-jvm:0.2.1=classpath
-org.jetbrains:markdown:0.2.1=classpath
 org.json:json:20180813=classpath
-org.jsoup:jsoup:1.13.1=classpath
 org.jvnet.staxex:stax-ex:1.8.1=classpath
 org.ow2.asm:asm-analysis:9.1=classpath
 org.ow2.asm:asm-commons:9.1=classpath
diff --git a/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties b/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties
index 3c472b9..e1bef7e 100644
--- a/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
diff --git a/dev/benchmarks/complex_layout/android/settings.gradle b/dev/benchmarks/complex_layout/android/settings.gradle
index 03ae72d..a020595 100644
--- a/dev/benchmarks/complex_layout/android/settings.gradle
+++ b/dev/benchmarks/complex_layout/android/settings.gradle
@@ -8,8 +8,6 @@
 
 include ':app'
 
-enableFeaturePreview('ONE_LOCKFILE_PER_PROJECT')
-
 def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
 def properties = new Properties()
 
diff --git a/dev/tools/bin/generate_gradle_lockfiles.dart b/dev/tools/bin/generate_gradle_lockfiles.dart
index c3356a2..006ee2e 100644
--- a/dev/tools/bin/generate_gradle_lockfiles.dart
+++ b/dev/tools/bin/generate_gradle_lockfiles.dart
@@ -149,7 +149,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:7.2.0'
+        classpath 'com.android.tools.build:gradle:7.3.0'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
     }
 
@@ -197,8 +197,6 @@
 
 include ':app'
 
-enableFeaturePreview('ONE_LOCKFILE_PER_PROJECT')
-
 def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
 def properties = new Properties()
 
diff --git a/packages/flutter_tools/gradle/flutter.gradle b/packages/flutter_tools/gradle/flutter.gradle
index 99063f3..8354a6f 100644
--- a/packages/flutter_tools/gradle/flutter.gradle
+++ b/packages/flutter_tools/gradle/flutter.gradle
@@ -909,8 +909,8 @@
             }
             File libJar = project.file("${project.buildDir}/$INTERMEDIATES_DIR/flutter/${variant.name}/libs.jar")
             Task packFlutterAppAotTask = project.tasks.create(name: "packLibs${FLUTTER_BUILD_PREFIX}${variant.name.capitalize()}", type: Jar) {
-                destinationDir libJar.parentFile
-                archiveName libJar.name
+                destinationDirectory = libJar.parentFile
+                archiveFileName = libJar.name
                 dependsOn compileTask
                 targetPlatforms.each { targetPlatform ->
                     String abi = PLATFORM_ARCH_MAP[targetPlatform]
@@ -959,6 +959,12 @@
                     variantOutput.processResourcesProvider.get() : variantOutput.processResources
                 processResources.dependsOn(copyFlutterAssetsTask)
             }
+            // Task compressAssets uses the output of copyFlutterAssetsTask,
+            // so it's necessary to declare it as an dependency.
+            def compressAssetsTask = project.tasks.findByName("compress${variant.name.capitalize()}Assets")
+            if (compressAssetsTask) {
+                compressAssetsTask.dependsOn copyFlutterAssetsTask
+            }
             return copyFlutterAssetsTask
         } // end def addFlutterDeps