From d48aa4295040775d9288f09ebd0fdce2dbba82cd Mon Sep 17 00:00:00 2001 From: "auto-submit[bot]" <98614782+auto-submit[bot]@users.noreply.github.com> Date: Thu, 13 Nov 2025 03:13:19 +0000 Subject: [PATCH] Reverts "Gradle Lockfile workaround and Android Embedder dependency change for ExifInterface (#177508)" (#178428) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts: flutter/flutter#177508 Initiated by: jtmcdole Reason for reverting: tree is no bueno ``` ┌─ Flutter Fix ───────────────────────────────────────────────────────────────────┐ [2025-11-12 16:47:24.646119] [STDOUT] stdout: │ You need to update the lockfile, or disable Gradle dependency locking. │ [2025-11-12 16:47:24.646119] [STDOUT] stdout: │ To regenerate the lockfiles run: `.\gradlew.bat :generateLockfiles` in │ [2025-11-12 16:47:24.646119] [STDOUT] stdout: │ c:\ Original PR Author: mboetger Reviewed By: {reidbaker, gmackall} This change reverts the following previous change: Create a workaround for generating gradle lock files. When the ignore file exists, gradle locking will be disabled. This will allow deps for the embedder to be checked in, and then in a follow-up PR the lockfiles can correctly be updated and the ignore file can be deleted. Fixes: #177066, #177071 ## 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. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. Co-authored-by: auto-submit[bot] --- DEPS | 2 +- dev/a11y_assessments/android/build.gradle | 3 +- .../complex_layout/android/build.gradle | 3 +- .../macrobenchmarks/android/build.gradle | 3 +- .../android/build.gradle | 3 +- .../android/build.gradle | 3 +- .../test_apps/stocks/android/build.gradle | 3 +- .../android/build.gradle | 3 +- .../android_views/android/build.gradle | 3 +- .../channels/android/build.gradle | 3 +- .../android/build.gradle.kts | 3 +- .../flavors/android/build.gradle | 3 +- .../flutter_gallery/android/build.gradle | 3 +- .../platform_interaction/android/build.gradle | 3 +- .../release_smoke_test/android/build.gradle | 3 +- .../spell_check/android/build.gradle | 3 +- dev/integration_tests/ui/android/build.gradle | 3 +- dev/manual_tests/android/build.gradle | 3 +- dev/tools/bin/config/.ignore-locking.md | 1 - dev/tools/bin/generate_gradle_lockfiles.dart | 59 ++++--------------- .../flutter/shell/platform/android/BUILD.gn | 3 +- .../engine/image/ExifMetadataReader.java | 3 +- .../embedding/engine/image/ImageUtils.java | 3 +- engine/src/flutter/tools/androidx/files.json | 12 +--- .../cipd/android_embedding_bundle/README.md | 21 +++---- examples/flutter_view/android/build.gradle | 3 +- examples/hello_world/android/build.gradle.kts | 3 +- examples/image_list/android/build.gradle | 3 +- examples/layers/android/build.gradle | 3 +- .../platform_channel/android/build.gradle | 3 +- examples/platform_view/android/build.gradle | 3 +- .../example/android/build.gradle.kts | 3 +- 32 files changed, 50 insertions(+), 126 deletions(-) delete mode 100644 dev/tools/bin/config/.ignore-locking.md diff --git a/DEPS b/DEPS index 8d12074f71a..3a33c1207e2 100644 --- a/DEPS +++ b/DEPS @@ -624,7 +624,7 @@ deps = { 'packages': [ { 'package': 'flutter/android/embedding_bundle', - 'version': 'last_updated:2025-10-15T09:53:03-0700' + 'version': 'last_updated:2024-09-10T16:32:16-0700' } ], 'condition': 'download_android_deps', diff --git a/dev/a11y_assessments/android/build.gradle b/dev/a11y_assessments/android/build.gradle index a53f63eaa91..a9cc5e6a9cf 100644 --- a/dev/a11y_assessments/android/build.gradle +++ b/dev/a11y_assessments/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/benchmarks/complex_layout/android/build.gradle b/dev/benchmarks/complex_layout/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/benchmarks/complex_layout/android/build.gradle +++ b/dev/benchmarks/complex_layout/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/benchmarks/macrobenchmarks/android/build.gradle b/dev/benchmarks/macrobenchmarks/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/benchmarks/macrobenchmarks/android/build.gradle +++ b/dev/benchmarks/macrobenchmarks/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/benchmarks/platform_views_layout/android/build.gradle b/dev/benchmarks/platform_views_layout/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/benchmarks/platform_views_layout/android/build.gradle +++ b/dev/benchmarks/platform_views_layout/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/benchmarks/platform_views_layout_hybrid_composition/android/build.gradle b/dev/benchmarks/platform_views_layout_hybrid_composition/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/benchmarks/platform_views_layout_hybrid_composition/android/build.gradle +++ b/dev/benchmarks/platform_views_layout_hybrid_composition/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/benchmarks/test_apps/stocks/android/build.gradle b/dev/benchmarks/test_apps/stocks/android/build.gradle index 0181996b4c5..a9cc5e6a9cf 100644 --- a/dev/benchmarks/test_apps/stocks/android/build.gradle +++ b/dev/benchmarks/test_apps/stocks/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/integration_tests/android_semantics_testing/android/build.gradle b/dev/integration_tests/android_semantics_testing/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/integration_tests/android_semantics_testing/android/build.gradle +++ b/dev/integration_tests/android_semantics_testing/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/integration_tests/android_views/android/build.gradle b/dev/integration_tests/android_views/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/integration_tests/android_views/android/build.gradle +++ b/dev/integration_tests/android_views/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/integration_tests/channels/android/build.gradle b/dev/integration_tests/channels/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/integration_tests/channels/android/build.gradle +++ b/dev/integration_tests/channels/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/integration_tests/display_cutout_rotation/android/build.gradle.kts b/dev/integration_tests/display_cutout_rotation/android/build.gradle.kts index ff83f088d3e..cfbd086c704 100644 --- a/dev/integration_tests/display_cutout_rotation/android/build.gradle.kts +++ b/dev/integration_tests/display_cutout_rotation/android/build.gradle.kts @@ -31,8 +31,7 @@ subprojects { dependencyLocking { ignoredDependencies.add("io.flutter:*") lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty("local-engine-repo")) { + if (!project.hasProperty("local-engine-repo")) { lockAllConfigurations() } } diff --git a/dev/integration_tests/flavors/android/build.gradle b/dev/integration_tests/flavors/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/integration_tests/flavors/android/build.gradle +++ b/dev/integration_tests/flavors/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/integration_tests/flutter_gallery/android/build.gradle b/dev/integration_tests/flutter_gallery/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/integration_tests/flutter_gallery/android/build.gradle +++ b/dev/integration_tests/flutter_gallery/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/integration_tests/platform_interaction/android/build.gradle b/dev/integration_tests/platform_interaction/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/integration_tests/platform_interaction/android/build.gradle +++ b/dev/integration_tests/platform_interaction/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/integration_tests/release_smoke_test/android/build.gradle b/dev/integration_tests/release_smoke_test/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/integration_tests/release_smoke_test/android/build.gradle +++ b/dev/integration_tests/release_smoke_test/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/integration_tests/spell_check/android/build.gradle b/dev/integration_tests/spell_check/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/integration_tests/spell_check/android/build.gradle +++ b/dev/integration_tests/spell_check/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/integration_tests/ui/android/build.gradle b/dev/integration_tests/ui/android/build.gradle index 5383916187c..a9cc5e6a9cf 100644 --- a/dev/integration_tests/ui/android/build.gradle +++ b/dev/integration_tests/ui/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/manual_tests/android/build.gradle b/dev/manual_tests/android/build.gradle index a53f63eaa91..a9cc5e6a9cf 100644 --- a/dev/manual_tests/android/build.gradle +++ b/dev/manual_tests/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/dev/tools/bin/config/.ignore-locking.md b/dev/tools/bin/config/.ignore-locking.md deleted file mode 100644 index 0a732e21187..00000000000 --- a/dev/tools/bin/config/.ignore-locking.md +++ /dev/null @@ -1 +0,0 @@ -Reason: https://github.com/flutter/flutter/pull/177508 \ No newline at end of file diff --git a/dev/tools/bin/generate_gradle_lockfiles.dart b/dev/tools/bin/generate_gradle_lockfiles.dart index bbfb5afff26..77567ac7bc3 100644 --- a/dev/tools/bin/generate_gradle_lockfiles.dart +++ b/dev/tools/bin/generate_gradle_lockfiles.dart @@ -15,7 +15,6 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:file/file.dart'; import 'package:file/local.dart'; -import 'package:path/path.dart' as path; import 'package:yaml/yaml.dart'; void main(List arguments) { @@ -27,8 +26,6 @@ void main(List arguments) { 'defined at dev/tools/bin/config/lockfile_exclusion.yaml.\n' 'To disable this behavior, run with `--no-exclusion`.\n'; - const String ignoreFileName = '.ignore-locking.md'; - final ArgParser argParser = ArgParser() ..addFlag( 'gradle-generation', @@ -40,11 +37,6 @@ void main(List arguments) { help: 'Run the script using the config file at ./configs/lockfile_exclusion.yaml to skip the specified subdirectories.', defaultsTo: true, - ) - ..addOption( - 'ignore-locking', - help: - 'Reason to disable gradle dependency locking. A reason must be given if --ignore-locking is used.', ); ArgResults args; @@ -64,15 +56,6 @@ void main(List arguments) { // Skip android subdirectories specified in the ./config/lockfile_exclusion.yaml file. final bool useExclusion = (args['exclusion'] as bool?) ?? true; - final bool ignoreLocking = args['ignore-locking'] != null; - final String ignoreReason = (args['ignore-locking'] as String?) ?? ''; - - if (ignoreLocking && ignoreReason.isEmpty) { - stderr.writeln('A reason must be provided for --ignore-locking.'); - stderr.writeln(usageMessage); - exit(1); - } - const FileSystem fileSystem = LocalFileSystem(); final Directory repoRoot = (() { @@ -84,19 +67,6 @@ void main(List arguments) { return repoRoot; })(); - final File ignoreFile = repoRoot - .childDirectory('dev') - .childDirectory('tools') - .childDirectory('bin') - .childDirectory('config') - .childFile(ignoreFileName); - if (ignoreLocking) { - print('Writing ignore file in ${ignoreFile.path}'); - ignoreFile.writeAsStringSync(ignoreReason); - } else if (ignoreFile.existsSync()) { - ignoreFile.deleteSync(); - } - final Iterable androidDirectories = discoverAndroidDirectories(repoRoot); final File exclusionFile = repoRoot @@ -201,12 +171,11 @@ void main(List arguments) { } if (gradleGeneration) { - final String relativeIgnorePath = path.relative(ignoreFile.path, from: androidDirectory.path); // Write file content corresponding to original file language. if (rootBuildGradle.basename.endsWith('.kts')) { - rootBuildGradle.writeAsStringSync(createGradleKtsFileContent(relativeIgnorePath)); + rootBuildGradle.writeAsStringSync(rootGradleKtsFileContent); } else { - rootBuildGradle.writeAsStringSync(createGradleFileContent(relativeIgnorePath)); + rootBuildGradle.writeAsStringSync(rootGradleFileContent); } if (settingsGradle.basename.endsWith('.kts')) { @@ -248,8 +217,7 @@ String exec(String cmd, List args, {String? workingDirectory}) { return result.stdout as String; } -String createGradleFileContent(String path) { - const String rootGradleFileContent = r''' +const String rootGradleFileContent = r''' // 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. @@ -275,8 +243,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } @@ -286,8 +253,6 @@ tasks.register("clean", Delete) { delete rootProject.layout.buildDirectory } '''; - return rootGradleFileContent.replaceAll('', path); -} const String settingGradleFileContent = r''' // Copyright 2014 The Flutter Authors. All rights reserved. @@ -333,12 +298,11 @@ plugins { include ":app" '''; -String createGradleKtsFileContent(String path) { - // Consider updating this file to reflect the latest updates to app templates - // when performing batch updates (this file is modeled after - // root_app/android/build.gradle.kts). - // After modification verify formatting with ktlint. - const String rootGradleKtsFileContent = r''' +// Consider updating this file to reflect the latest updates to app templates +// when performing batch updates (this file is modeled after +// root_app/android/build.gradle.kts). +// After modification verify formatting with ktlint. +const String rootGradleKtsFileContent = r''' // 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. @@ -372,8 +336,7 @@ subprojects { dependencyLocking { ignoredDependencies.add("io.flutter:*") lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/") - if (!ignoreFile.exists() && !project.hasProperty("local-engine-repo")) { + if (!project.hasProperty("local-engine-repo")) { lockAllConfigurations() } } @@ -383,8 +346,6 @@ tasks.register("clean") { delete(rootProject.layout.buildDirectory) } '''; - return rootGradleKtsFileContent.replaceAll('', path); -} // Consider updating this file to reflect the latest updates to app templates // when performing batch updates (this file is modeled after diff --git a/engine/src/flutter/shell/platform/android/BUILD.gn b/engine/src/flutter/shell/platform/android/BUILD.gn index 15723059dca..da5c2f8baf1 100644 --- a/engine/src/flutter/shell/platform/android/BUILD.gn +++ b/engine/src/flutter/shell/platform/android/BUILD.gn @@ -385,7 +385,7 @@ android_java_sources = [ embedding_dependencies_jars = [ "//flutter/third_party/android_embedding_dependencies/lib/activity-1.8.1.jar", - "//flutter/third_party/android_embedding_dependencies/lib/annotation-jvm-1.8.1.jar", + "//flutter/third_party/android_embedding_dependencies/lib/annotation-jvm-1.8.0.jar", "//flutter/third_party/android_embedding_dependencies/lib/annotation-experimental-1.4.0.jar", "//flutter/third_party/android_embedding_dependencies/lib/annotations-23.0.0.jar", "//flutter/third_party/android_embedding_dependencies/lib/collection-1.1.0.jar", @@ -395,7 +395,6 @@ embedding_dependencies_jars = [ "//flutter/third_party/android_embedding_dependencies/lib/core-runtime-2.2.0.jar", "//flutter/third_party/android_embedding_dependencies/lib/customview-1.0.0.jar", "//flutter/third_party/android_embedding_dependencies/lib/fragment-1.7.1.jar", - "//flutter/third_party/android_embedding_dependencies/lib/exifinterface-1.4.1.jar", "//flutter/third_party/android_embedding_dependencies/lib/kotlin-stdlib-1.8.22.jar", "//flutter/third_party/android_embedding_dependencies/lib/kotlin-stdlib-common-1.8.22.jar", "//flutter/third_party/android_embedding_dependencies/lib/kotlin-stdlib-jdk7-1.8.20.jar", diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/image/ExifMetadataReader.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/image/ExifMetadataReader.java index 55aef20917b..c29d64ac75b 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/image/ExifMetadataReader.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/image/ExifMetadataReader.java @@ -4,9 +4,10 @@ package io.flutter.embedding.engine.image; +//noinspection ExifInterface +import android.media.ExifInterface; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; -import androidx.exifinterface.media.ExifInterface; import io.flutter.Log; import java.io.ByteArrayInputStream; import java.io.IOException; diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/image/ImageUtils.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/image/ImageUtils.java index 8b137753f52..ac6690b13e0 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/image/ImageUtils.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/image/ImageUtils.java @@ -6,8 +6,9 @@ package io.flutter.embedding.engine.image; import android.graphics.Bitmap; import android.graphics.Matrix; +//noinspection ExifInterface +import android.media.ExifInterface; import androidx.annotation.NonNull; -import androidx.exifinterface.media.ExifInterface; import io.flutter.Log; import java.nio.ByteBuffer; diff --git a/engine/src/flutter/tools/androidx/files.json b/engine/src/flutter/tools/androidx/files.json index 39274120a53..a6a284a2741 100644 --- a/engine/src/flutter/tools/androidx/files.json +++ b/engine/src/flutter/tools/androidx/files.json @@ -37,9 +37,9 @@ ] }, { - "url": "https://maven.google.com/androidx/annotation/annotation/1.8.1/annotation-1.8.1.jar", + "url": "https://maven.google.com/androidx/annotation/annotation/1.8.0/annotation-1.8.0.jar", "out_file_name": "androidx_annotation.jar", - "maven_dependency": "androidx.annotation:annotation:1.8.1", + "maven_dependency": "androidx.annotation:annotation:1.8.0", "provides": [ "androidx.annotation.CallSuper", "androidx.annotation.FloatRange", @@ -92,13 +92,5 @@ "out_file_name": "relinker-1.4.5.aar", "maven_dependency": "com.getkeepsafe.relinker:relinker:1.4.5", "provides": ["com.getkeepsafe.relinker.ReLinker"] - }, - { - "url": "https://maven.google.com/androidx/exifinterface/1.4.1/exifinterface:1.4.1.aar", - "out_file_name": "exifinterface.aar", - "maven_dependency": "androidx.exifinterface:exifinterface:1.4.1", - "provides": [ - "androidx.exifinterface.media.ExifInterface" - ] } ] diff --git a/engine/src/flutter/tools/cipd/android_embedding_bundle/README.md b/engine/src/flutter/tools/cipd/android_embedding_bundle/README.md index e08606bd76e..f1d99fe2aed 100644 --- a/engine/src/flutter/tools/cipd/android_embedding_bundle/README.md +++ b/engine/src/flutter/tools/cipd/android_embedding_bundle/README.md @@ -34,16 +34,11 @@ below explain how to fetch the license information for the dependencies. new tag: `last_updated:"$version_tag"`. 1. Update the GN list `embedding_dependencies_jars` in `src/flutter/shell/platform/android/BUILD.gn`. -1. The Gradle lockfiles will need to be updated, but they cannot be - updated in this PR. They will need to be updated in a follow-up - PR. Instead, run - `/dev/tools/bin/generate_gradle_lockfiles.dart - --no-gradle-generation --no-exclusion --ignore-locking=Reason: `. - Replace a link to the issue. This will - create a '.ignore-locking.md' file that will disable Gradle locking - and allow tests to pass without locking. -1. Once the initial PR is submitted, you will need to create a - follow-up PR that updates the Gradle Lockfiles. Run - `/dev/tools/bin/generate_gradle_lockfiles.dart - --no-gradle-generation --no-exclusion` to delete all the ignore - files and update the Gradle Lockfiles. Submit this PR as well. + +## Updating Gradle Lockfiles in the Framework After Adding Dependencies +If you land a pr that changes the versions of the embedding dependencies, +or adds a new dependency and makes use of it, you will also need to +perform a manual roll of that change to the framework that re-generates +the Gradle lockfiles using the script at +`/dev/tools/bin/generate_gradle_lockfiles.dart` +(run with the `--no-gradle-generation` and `--no-exclusion` flags). \ No newline at end of file diff --git a/examples/flutter_view/android/build.gradle b/examples/flutter_view/android/build.gradle index 310f11b607c..a9cc5e6a9cf 100644 --- a/examples/flutter_view/android/build.gradle +++ b/examples/flutter_view/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../dev/tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/examples/hello_world/android/build.gradle.kts b/examples/hello_world/android/build.gradle.kts index 86fd3d2e538..cfbd086c704 100644 --- a/examples/hello_world/android/build.gradle.kts +++ b/examples/hello_world/android/build.gradle.kts @@ -31,8 +31,7 @@ subprojects { dependencyLocking { ignoredDependencies.add("io.flutter:*") lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../dev/tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty("local-engine-repo")) { + if (!project.hasProperty("local-engine-repo")) { lockAllConfigurations() } } diff --git a/examples/image_list/android/build.gradle b/examples/image_list/android/build.gradle index 310f11b607c..a9cc5e6a9cf 100644 --- a/examples/image_list/android/build.gradle +++ b/examples/image_list/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../dev/tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/examples/layers/android/build.gradle b/examples/layers/android/build.gradle index 310f11b607c..a9cc5e6a9cf 100644 --- a/examples/layers/android/build.gradle +++ b/examples/layers/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../dev/tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/examples/platform_channel/android/build.gradle b/examples/platform_channel/android/build.gradle index 310f11b607c..a9cc5e6a9cf 100644 --- a/examples/platform_channel/android/build.gradle +++ b/examples/platform_channel/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../dev/tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/examples/platform_view/android/build.gradle b/examples/platform_view/android/build.gradle index 310f11b607c..a9cc5e6a9cf 100644 --- a/examples/platform_view/android/build.gradle +++ b/examples/platform_view/android/build.gradle @@ -23,8 +23,7 @@ subprojects { dependencyLocking { ignoredDependencies.add('io.flutter:*') lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../dev/tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty('local-engine-repo')) { + if (!project.hasProperty('local-engine-repo')) { lockAllConfigurations() } } diff --git a/packages/integration_test/example/android/build.gradle.kts b/packages/integration_test/example/android/build.gradle.kts index a9a6263317b..cfbd086c704 100644 --- a/packages/integration_test/example/android/build.gradle.kts +++ b/packages/integration_test/example/android/build.gradle.kts @@ -31,8 +31,7 @@ subprojects { dependencyLocking { ignoredDependencies.add("io.flutter:*") lockFile = file("${rootProject.projectDir}/project-${project.name}.lockfile") - var ignoreFile = file("${rootProject.projectDir}/../../../../dev/tools/bin/config/.ignore-locking.md") - if (!ignoreFile.exists() && !project.hasProperty("local-engine-repo")) { + if (!project.hasProperty("local-engine-repo")) { lockAllConfigurations() } }