diff --git a/dev/benchmarks/complex_layout/android/build.gradle b/dev/benchmarks/complex_layout/android/build.gradle index 08a5807412..a2a8866952 100644 --- a/dev/benchmarks/complex_layout/android/build.gradle +++ b/dev/benchmarks/complex_layout/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/benchmarks/macrobenchmarks/android/build.gradle b/dev/benchmarks/macrobenchmarks/android/build.gradle index ee45d79df5..6498a1aab8 100644 --- a/dev/benchmarks/macrobenchmarks/android/build.gradle +++ b/dev/benchmarks/macrobenchmarks/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/benchmarks/microbenchmarks/android/build.gradle b/dev/benchmarks/microbenchmarks/android/build.gradle index 77266c5047..f1c75ee529 100644 --- a/dev/benchmarks/microbenchmarks/android/build.gradle +++ b/dev/benchmarks/microbenchmarks/android/build.gradle @@ -45,6 +45,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/benchmarks/multiple_flutters/android/build.gradle b/dev/benchmarks/multiple_flutters/android/build.gradle index 2118aa0187..ea717b215e 100644 --- a/dev/benchmarks/multiple_flutters/android/build.gradle +++ b/dev/benchmarks/multiple_flutters/android/build.gradle @@ -25,6 +25,6 @@ allprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir -} \ No newline at end of file +} diff --git a/dev/benchmarks/platform_views_layout/android/build.gradle b/dev/benchmarks/platform_views_layout/android/build.gradle index 65290f3b48..2de2062357 100644 --- a/dev/benchmarks/platform_views_layout/android/build.gradle +++ b/dev/benchmarks/platform_views_layout/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } 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 ee45d79df5..6498a1aab8 100644 --- a/dev/benchmarks/platform_views_layout_hybrid_composition/android/build.gradle +++ b/dev/benchmarks/platform_views_layout_hybrid_composition/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/benchmarks/test_apps/stocks/android/build.gradle b/dev/benchmarks/test_apps/stocks/android/build.gradle index ee45d79df5..6498a1aab8 100644 --- a/dev/benchmarks/test_apps/stocks/android/build.gradle +++ b/dev/benchmarks/test_apps/stocks/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/abstract_method_smoke_test/android/build.gradle b/dev/integration_tests/abstract_method_smoke_test/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/integration_tests/abstract_method_smoke_test/android/build.gradle +++ b/dev/integration_tests/abstract_method_smoke_test/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/android_custom_host_app/build.gradle b/dev/integration_tests/android_custom_host_app/build.gradle index 211e34b989..02407dbce6 100644 --- a/dev/integration_tests/android_custom_host_app/build.gradle +++ b/dev/integration_tests/android_custom_host_app/build.gradle @@ -19,6 +19,6 @@ allprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/android_embedding_v2_smoke_test/android/build.gradle b/dev/integration_tests/android_embedding_v2_smoke_test/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/integration_tests/android_embedding_v2_smoke_test/android/build.gradle +++ b/dev/integration_tests/android_embedding_v2_smoke_test/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/android_host_app_v2_embedding/build.gradle b/dev/integration_tests/android_host_app_v2_embedding/build.gradle index 211e34b989..02407dbce6 100644 --- a/dev/integration_tests/android_host_app_v2_embedding/build.gradle +++ b/dev/integration_tests/android_host_app_v2_embedding/build.gradle @@ -19,6 +19,6 @@ allprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/android_semantics_testing/android/build.gradle b/dev/integration_tests/android_semantics_testing/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/integration_tests/android_semantics_testing/android/build.gradle +++ b/dev/integration_tests/android_semantics_testing/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/android_views/android/build.gradle b/dev/integration_tests/android_views/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/integration_tests/android_views/android/build.gradle +++ b/dev/integration_tests/android_views/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/channels/android/build.gradle b/dev/integration_tests/channels/android/build.gradle index 8df9b5b004..d93b7eb6e1 100644 --- a/dev/integration_tests/channels/android/build.gradle +++ b/dev/integration_tests/channels/android/build.gradle @@ -30,6 +30,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/deferred_components_test/android/build.gradle b/dev/integration_tests/deferred_components_test/android/build.gradle index 8f2f7a1886..deb9cb54d3 100644 --- a/dev/integration_tests/deferred_components_test/android/build.gradle +++ b/dev/integration_tests/deferred_components_test/android/build.gradle @@ -45,6 +45,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/external_ui/android/build.gradle b/dev/integration_tests/external_ui/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/integration_tests/external_ui/android/build.gradle +++ b/dev/integration_tests/external_ui/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/flavors/android/build.gradle b/dev/integration_tests/flavors/android/build.gradle index 65290f3b48..2de2062357 100644 --- a/dev/integration_tests/flavors/android/build.gradle +++ b/dev/integration_tests/flavors/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/flutter_gallery/android/build.gradle b/dev/integration_tests/flutter_gallery/android/build.gradle index 65290f3b48..2de2062357 100644 --- a/dev/integration_tests/flutter_gallery/android/build.gradle +++ b/dev/integration_tests/flutter_gallery/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/gradle_deprecated_settings/android/build.gradle b/dev/integration_tests/gradle_deprecated_settings/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/integration_tests/gradle_deprecated_settings/android/build.gradle +++ b/dev/integration_tests/gradle_deprecated_settings/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/hybrid_android_views/android/build.gradle b/dev/integration_tests/hybrid_android_views/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/integration_tests/hybrid_android_views/android/build.gradle +++ b/dev/integration_tests/hybrid_android_views/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/module_host_with_custom_build_v2_embedding/build.gradle b/dev/integration_tests/module_host_with_custom_build_v2_embedding/build.gradle index 211e34b989..02407dbce6 100644 --- a/dev/integration_tests/module_host_with_custom_build_v2_embedding/build.gradle +++ b/dev/integration_tests/module_host_with_custom_build_v2_embedding/build.gradle @@ -19,6 +19,6 @@ allprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/non_nullable/android/build.gradle b/dev/integration_tests/non_nullable/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/integration_tests/non_nullable/android/build.gradle +++ b/dev/integration_tests/non_nullable/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/platform_interaction/android/build.gradle b/dev/integration_tests/platform_interaction/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/integration_tests/platform_interaction/android/build.gradle +++ b/dev/integration_tests/platform_interaction/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/release_smoke_test/android/build.gradle b/dev/integration_tests/release_smoke_test/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/integration_tests/release_smoke_test/android/build.gradle +++ b/dev/integration_tests/release_smoke_test/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/spell_check/android/build.gradle b/dev/integration_tests/spell_check/android/build.gradle index 2d6071148a..b843584d52 100644 --- a/dev/integration_tests/spell_check/android/build.gradle +++ b/dev/integration_tests/spell_check/android/build.gradle @@ -30,6 +30,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/integration_tests/ui/android/build.gradle b/dev/integration_tests/ui/android/build.gradle index 65290f3b48..2de2062357 100644 --- a/dev/integration_tests/ui/android/build.gradle +++ b/dev/integration_tests/ui/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/manual_tests/android/build.gradle b/dev/manual_tests/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/dev/manual_tests/android/build.gradle +++ b/dev/manual_tests/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev/tools/bin/generate_gradle_lockfiles.dart b/dev/tools/bin/generate_gradle_lockfiles.dart index 006ee2e0cb..8daafdf7bf 100644 --- a/dev/tools/bin/generate_gradle_lockfiles.dart +++ b/dev/tools/bin/generate_gradle_lockfiles.dart @@ -181,7 +181,7 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } '''; diff --git a/dev/tracing_tests/android/build.gradle b/dev/tracing_tests/android/build.gradle index ccf18861d7..830c81ab1a 100644 --- a/dev/tracing_tests/android/build.gradle +++ b/dev/tracing_tests/android/build.gradle @@ -30,6 +30,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/examples/api/android/build.gradle b/examples/api/android/build.gradle index a67ada916a..bf76eafdcd 100644 --- a/examples/api/android/build.gradle +++ b/examples/api/android/build.gradle @@ -28,6 +28,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/examples/flutter_view/android/build.gradle b/examples/flutter_view/android/build.gradle index 65290f3b48..2de2062357 100644 --- a/examples/flutter_view/android/build.gradle +++ b/examples/flutter_view/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/examples/hello_world/android/build.gradle b/examples/hello_world/android/build.gradle index 65290f3b48..2de2062357 100644 --- a/examples/hello_world/android/build.gradle +++ b/examples/hello_world/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/examples/image_list/android/build.gradle b/examples/image_list/android/build.gradle index 65290f3b48..2de2062357 100644 --- a/examples/image_list/android/build.gradle +++ b/examples/image_list/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/examples/layers/android/build.gradle b/examples/layers/android/build.gradle index 65290f3b48..2de2062357 100644 --- a/examples/layers/android/build.gradle +++ b/examples/layers/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/examples/platform_channel/android/build.gradle b/examples/platform_channel/android/build.gradle index 65290f3b48..2de2062357 100644 --- a/examples/platform_channel/android/build.gradle +++ b/examples/platform_channel/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/examples/platform_view/android/build.gradle b/examples/platform_view/android/build.gradle index 65290f3b48..2de2062357 100644 --- a/examples/platform_view/android/build.gradle +++ b/examples/platform_view/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart index ef5d5f121a..ae5bff20d5 100644 --- a/packages/flutter_tools/lib/src/android/gradle.dart +++ b/packages/flutter_tools/lib/src/android/gradle.dart @@ -19,6 +19,7 @@ import '../base/logger.dart'; import '../base/net.dart'; import '../base/platform.dart'; import '../base/process.dart'; +import '../base/project_migrator.dart'; import '../base/terminal.dart'; import '../base/utils.dart'; import '../build_info.dart'; @@ -31,6 +32,7 @@ import 'android_builder.dart'; import 'android_studio.dart'; import 'gradle_errors.dart'; import 'gradle_utils.dart'; +import 'migrations/top_level_gradle_build_file_migration.dart'; import 'multidex.dart'; /// The directory where the APK artifact is generated. @@ -235,11 +237,17 @@ class AndroidGradleBuilder implements AndroidBuilder { int retry = 0, @visibleForTesting int? maxRetries, }) async { - if (!project.android.isSupportedVersion) { _exitWithUnsupportedProjectMessage(_usage, _logger.terminal); } + final List migrators = [ + TopLevelGradleBuildFileMigration(project.android, _logger), + ]; + + final ProjectMigration migration = ProjectMigration(migrators); + migration.run(); + final bool usesAndroidX = isAppUsingAndroidX(project.android.hostAppGradleRoot); if (usesAndroidX) { BuildEvent('app-using-android-x', type: 'gradle', flutterUsage: _usage).send(); diff --git a/packages/flutter_tools/lib/src/android/migrations/top_level_gradle_build_file_migration.dart b/packages/flutter_tools/lib/src/android/migrations/top_level_gradle_build_file_migration.dart new file mode 100644 index 0000000000..71b54b658d --- /dev/null +++ b/packages/flutter_tools/lib/src/android/migrations/top_level_gradle_build_file_migration.dart @@ -0,0 +1,53 @@ +// 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 '../../base/file_system.dart'; +import '../../base/project_migrator.dart'; +import '../../project.dart'; + +const String _eagerCleanTaskDeclaration = ''' +task clean(type: Delete) { + delete rootProject.buildDir +} +'''; + +const String _lazyCleanTaskDeclaration = ''' +tasks.register("clean", Delete) { + delete rootProject.buildDir +} +'''; + +/// Migrate the Gradle "clean" task to use modern, lazy declaration style. +class TopLevelGradleBuildFileMigration extends ProjectMigrator { + TopLevelGradleBuildFileMigration( + AndroidProject project, + super.logger, + ) : _topLevelGradleBuildFile = project.hostAppGradleRoot.childFile('build.gradle'); + + final File _topLevelGradleBuildFile; + + @override + void migrate() { + if (!_topLevelGradleBuildFile.existsSync()) { + logger.printTrace('Top-level Gradle build file not found, skipping migration of task "clean".'); + return; + } + + processFileLines(_topLevelGradleBuildFile); + } + + @override + String migrateFileContents(String fileContents) { + final String newContents = fileContents.replaceAll( + _eagerCleanTaskDeclaration, + _lazyCleanTaskDeclaration, + ); + + if (newContents != fileContents) { + logger.printTrace('Migrating "clean" Gradle task to lazy declaration style.'); + } + + return newContents; + } +} diff --git a/packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.tmpl b/packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.tmpl index 44c7b9c170..1411541a8d 100644 --- a/packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.tmpl +++ b/packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.tmpl @@ -26,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.tmpl b/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.tmpl index 44c7b9c170..1411541a8d 100644 --- a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.tmpl +++ b/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.tmpl @@ -26,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/packages/flutter_tools/test/general.shard/android/android_project_migration_test.dart b/packages/flutter_tools/test/general.shard/android/android_project_migration_test.dart new file mode 100644 index 0000000000..4385e66be1 --- /dev/null +++ b/packages/flutter_tools/test/general.shard/android/android_project_migration_test.dart @@ -0,0 +1,88 @@ +// 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 'package:file/file.dart'; +import 'package:file/memory.dart'; +import 'package:flutter_tools/src/android/migrations/top_level_gradle_build_file_migration.dart'; +import 'package:flutter_tools/src/base/logger.dart'; +import 'package:flutter_tools/src/project.dart'; +import 'package:test/fake.dart'; + +import '../../src/common.dart'; +import '../../src/context.dart'; + +void main() { + group('Android migration', () { + group('migrate the Gradle "clean" task to lazy declaration', () { + late MemoryFileSystem memoryFileSystem; + late BufferLogger bufferLogger; + late FakeAndroidProject project; + late File topLevelGradleBuildFile; + + setUp(() { + memoryFileSystem = MemoryFileSystem.test(); + bufferLogger = BufferLogger.test(); + project = FakeAndroidProject( + root: memoryFileSystem.currentDirectory.childDirectory('android')..createSync(), + ); + topLevelGradleBuildFile = project.hostAppGradleRoot.childFile('build.gradle'); + }); + + testUsingContext('skipped if files are missing', () { + final TopLevelGradleBuildFileMigration androidProjectMigration = TopLevelGradleBuildFileMigration( + project, + bufferLogger, + ); + androidProjectMigration.migrate(); + expect(topLevelGradleBuildFile.existsSync(), isFalse); + expect(bufferLogger.traceText, contains('Top-level Gradle build file not found, skipping migration of task "clean".')); + }); + + testUsingContext('skipped if nothing to upgrade', () { + topLevelGradleBuildFile.writeAsStringSync(''' +tasks.register("clean", Delete) { + delete rootProject.buildDir +} + '''); + + final TopLevelGradleBuildFileMigration androidProjectMigration = TopLevelGradleBuildFileMigration( + project, + bufferLogger, + ); + final DateTime previousLastModified = topLevelGradleBuildFile.lastModifiedSync(); + androidProjectMigration.migrate(); + + expect(topLevelGradleBuildFile.lastModifiedSync(), previousLastModified); + }); + + testUsingContext('top-level build.gradle is migrated', () { + topLevelGradleBuildFile.writeAsStringSync(''' +task clean(type: Delete) { + delete rootProject.buildDir +} +'''); + + final TopLevelGradleBuildFileMigration androidProjectMigration = TopLevelGradleBuildFileMigration( + project, + bufferLogger, + ); + androidProjectMigration.migrate(); + + expect(bufferLogger.traceText, contains('Migrating "clean" Gradle task to lazy declaration style.')); + expect(topLevelGradleBuildFile.readAsStringSync(), equals(''' +tasks.register("clean", Delete) { + delete rootProject.buildDir +} +''')); + }); + }); + }); +} + +class FakeAndroidProject extends Fake implements AndroidProject { + FakeAndroidProject({required Directory root}) : hostAppGradleRoot = root; + + @override + Directory hostAppGradleRoot; +} diff --git a/packages/flutter_tools/test/integration.shard/test_data/deferred_components_project.dart b/packages/flutter_tools/test/integration.shard/test_data/deferred_components_project.dart index 92173fd7c1..35a7c1cbc2 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/deferred_components_project.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/deferred_components_project.dart @@ -134,7 +134,7 @@ class BasicDeferredComponentsConfig extends DeferredComponentsConfig { project.evaluationDependsOn(':app') } - task clean(type: Delete) { + tasks.register("clean", Delete) { delete rootProject.buildDir } '''; diff --git a/packages/flutter_tools/test/integration.shard/test_data/multidex_project.dart b/packages/flutter_tools/test/integration.shard/test_data/multidex_project.dart index c3bc25f5f1..c3005cdd15 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/multidex_project.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/multidex_project.dart @@ -110,7 +110,7 @@ class MultidexProject extends Project { project.evaluationDependsOn(':app') } - task clean(type: Delete) { + tasks.register("clean", Delete) { delete rootProject.buildDir } '''; diff --git a/packages/integration_test/example/android/build.gradle b/packages/integration_test/example/android/build.gradle index 71333c78d0..57ace36b3c 100644 --- a/packages/integration_test/example/android/build.gradle +++ b/packages/integration_test/example/android/build.gradle @@ -46,6 +46,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir }