From b8e56e3063459a224f3df625cfa0e86cc4e14264 Mon Sep 17 00:00:00 2001 From: Gray Mackall <34871572+gmackall@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:34:23 -0800 Subject: [PATCH] Fix use of deprecated `buildDir` in Android templates/tests/examples (#157560) Replace deprecated `Project.buildDir` [getter](https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#getBuildDir()) and [setter](https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#setBuildDir(java.io.File)) uses. --- dev/benchmarks/macrobenchmarks/android/build.gradle | 8 +++++--- dev/benchmarks/microbenchmarks/android/build.gradle | 6 +++--- dev/benchmarks/multiple_flutters/android/build.gradle | 2 +- .../deferred_components_test/android/build.gradle | 6 +++--- .../android/component1/build.gradle | 4 ++-- .../gradle_deprecated_settings/android/build.gradle | 6 +++--- .../build.gradle | 2 +- .../native_driver_test/android/build.gradle | 6 +++--- dev/tools/bin/generate_gradle_lockfiles.dart | 6 +++--- dev/tracing_tests/android/build.gradle | 6 +++--- examples/hello_world/android/build.gradle.kts | 6 +++--- examples/layers/android/build.gradle | 6 +++--- .../flutter_tools/gradle/module_plugin_loader.gradle | 2 +- .../flutter_tools/gradle/src/main/groovy/flutter.groovy | 4 ++-- .../top_level_gradle_build_file_migration.dart | 2 +- .../app_shared/android-java.tmpl/build.gradle.kts.tmpl | 9 ++++++--- .../app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl | 9 ++++++--- .../module/android/deferred_component/build.gradle.tmpl | 4 ++-- .../android/android_project_migration_test.dart | 2 +- .../android_gradle_deprecated_plugin_apply_test.dart | 6 +++--- .../test_data/deferred_components_config.dart | 4 ++-- .../test_data/deferred_components_project.dart | 6 +++--- .../test/integration.shard/test_data/plugin_project.dart | 6 +++--- 23 files changed, 63 insertions(+), 55 deletions(-) diff --git a/dev/benchmarks/macrobenchmarks/android/build.gradle b/dev/benchmarks/macrobenchmarks/android/build.gradle index bedac9d2d4d..e0b1cd6b823 100644 --- a/dev/benchmarks/macrobenchmarks/android/build.gradle +++ b/dev/benchmarks/macrobenchmarks/android/build.gradle @@ -13,10 +13,12 @@ allprojects { } } -rootProject.buildDir = '../build' +Directory newBuildDir = rootProject.layout.buildDirectory.dir("../../build").get() +rootProject.layout.buildDirectory.value(newBuildDir) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + def newSubprojectBuildDir = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) } subprojects { project.evaluationDependsOn(':app') @@ -30,5 +32,5 @@ subprojects { } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } diff --git a/dev/benchmarks/microbenchmarks/android/build.gradle b/dev/benchmarks/microbenchmarks/android/build.gradle index e7e51b926e1..82465bb27d0 100644 --- a/dev/benchmarks/microbenchmarks/android/build.gradle +++ b/dev/benchmarks/microbenchmarks/android/build.gradle @@ -9,10 +9,10 @@ allprojects { } } -rootProject.buildDir = '../build' +rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) } subprojects { project.evaluationDependsOn(':app') @@ -25,5 +25,5 @@ subprojects { } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } diff --git a/dev/benchmarks/multiple_flutters/android/build.gradle b/dev/benchmarks/multiple_flutters/android/build.gradle index e1a10da4926..0b2a6bf7231 100644 --- a/dev/benchmarks/multiple_flutters/android/build.gradle +++ b/dev/benchmarks/multiple_flutters/android/build.gradle @@ -26,5 +26,5 @@ allprojects { } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } diff --git a/dev/integration_tests/deferred_components_test/android/build.gradle b/dev/integration_tests/deferred_components_test/android/build.gradle index dbed9170e93..cb8d3d94cf9 100644 --- a/dev/integration_tests/deferred_components_test/android/build.gradle +++ b/dev/integration_tests/deferred_components_test/android/build.gradle @@ -34,10 +34,10 @@ project.getTasks().withType(JavaCompile){ options.compilerArgs << "-Xlint:all" << "-Werror" } -rootProject.buildDir = '../build' +rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) project.evaluationDependsOn(':app') dependencyLocking { @@ -50,5 +50,5 @@ subprojects { } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } diff --git a/dev/integration_tests/deferred_components_test/android/component1/build.gradle b/dev/integration_tests/deferred_components_test/android/component1/build.gradle index b919b5b3bc7..9daab6d9c98 100644 --- a/dev/integration_tests/deferred_components_test/android/component1/build.gradle +++ b/dev/integration_tests/deferred_components_test/android/component1/build.gradle @@ -28,8 +28,8 @@ android { sourceSets { applicationVariants.all { variant -> - main.assets.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_assets" - main.jniLibs.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_libs" + main.assets.srcDirs += "${project.layout.buildDirectory.get()}/intermediates/flutter/${variant.name}/deferred_assets" + main.jniLibs.srcDirs += "${project.layout.buildDirectory.get()}/intermediates/flutter/${variant.name}/deferred_libs" } } diff --git a/dev/integration_tests/gradle_deprecated_settings/android/build.gradle b/dev/integration_tests/gradle_deprecated_settings/android/build.gradle index 789a374ac07..149a571b9e4 100644 --- a/dev/integration_tests/gradle_deprecated_settings/android/build.gradle +++ b/dev/integration_tests/gradle_deprecated_settings/android/build.gradle @@ -29,10 +29,10 @@ allprojects { } } -rootProject.buildDir = '../build' +rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) } subprojects { project.evaluationDependsOn(':app') @@ -46,5 +46,5 @@ subprojects { } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } 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 592d125fbc8..a7bc01eee42 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 @@ -20,5 +20,5 @@ allprojects { } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } diff --git a/dev/integration_tests/native_driver_test/android/build.gradle b/dev/integration_tests/native_driver_test/android/build.gradle index 96ac13cda72..b2cf5046332 100644 --- a/dev/integration_tests/native_driver_test/android/build.gradle +++ b/dev/integration_tests/native_driver_test/android/build.gradle @@ -9,14 +9,14 @@ allprojects { } } -rootProject.buildDir = "../build" +rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) } subprojects { project.evaluationDependsOn(":app") } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } diff --git a/dev/tools/bin/generate_gradle_lockfiles.dart b/dev/tools/bin/generate_gradle_lockfiles.dart index 1027b4ae244..67dcca45bb4 100644 --- a/dev/tools/bin/generate_gradle_lockfiles.dart +++ b/dev/tools/bin/generate_gradle_lockfiles.dart @@ -237,10 +237,10 @@ allprojects { } } -rootProject.buildDir = '../build' +rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) } subprojects { project.evaluationDependsOn(':app') @@ -254,7 +254,7 @@ subprojects { } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } '''; diff --git a/dev/tracing_tests/android/build.gradle b/dev/tracing_tests/android/build.gradle index 6cd585ceeef..b0ea3265c3a 100644 --- a/dev/tracing_tests/android/build.gradle +++ b/dev/tracing_tests/android/build.gradle @@ -9,14 +9,14 @@ allprojects { } } -rootProject.buildDir = '../build' +rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) } subprojects { project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } diff --git a/examples/hello_world/android/build.gradle.kts b/examples/hello_world/android/build.gradle.kts index e7755cd5f8d..42fe951ea19 100644 --- a/examples/hello_world/android/build.gradle.kts +++ b/examples/hello_world/android/build.gradle.kts @@ -13,10 +13,10 @@ allprojects { } } -rootProject.buildDir = file("../build") +rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = file("${rootProject.buildDir}/${project.name}") + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) } subprojects { project.evaluationDependsOn(":app") @@ -30,5 +30,5 @@ subprojects { } tasks.register("clean") { - delete(rootProject.buildDir) + delete(rootProject.layout.buildDirectory) } diff --git a/examples/layers/android/build.gradle b/examples/layers/android/build.gradle index bedac9d2d4d..a9cc5e6a9cf 100644 --- a/examples/layers/android/build.gradle +++ b/examples/layers/android/build.gradle @@ -13,10 +13,10 @@ allprojects { } } -rootProject.buildDir = '../build' +rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) } subprojects { project.evaluationDependsOn(':app') @@ -30,5 +30,5 @@ subprojects { } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } diff --git a/packages/flutter_tools/gradle/module_plugin_loader.gradle b/packages/flutter_tools/gradle/module_plugin_loader.gradle index 6e52b5ae9bf..f22dffbd823 100644 --- a/packages/flutter_tools/gradle/module_plugin_loader.gradle +++ b/packages/flutter_tools/gradle/module_plugin_loader.gradle @@ -30,7 +30,7 @@ gradle.getGradle().projectsLoaded { g -> if (!androidPluginBuildOutputDir.exists()) { androidPluginBuildOutputDir.mkdirs() } - subproject.buildDir = androidPluginBuildOutputDir + subproject.layout.buildDirectory.fileValue(androidPluginBuildOutputDir) } } def _mainModuleName = binding.variables['mainModuleName'] diff --git a/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy b/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy index ad5f72d9125..4949b597fc0 100644 --- a/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy +++ b/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy @@ -1289,7 +1289,7 @@ class FlutterPlugin implements Plugin { } } // Copy the native assets created by build.dart and placed in build/native_assets by flutter assemble. - // The `$project.buildDir` is '.android/Flutter/build/' instead of 'build/'. + // The `$project.layout.buildDirectory` is '.android/Flutter/build/' instead of 'build/'. String buildDir = "${getFlutterSourceDirectory()}/build" String nativeAssetsDir = "${buildDir}/native_assets/android/jniLibs/lib" from("${nativeAssetsDir}/${abi}") { @@ -1416,7 +1416,7 @@ class FlutterPlugin implements Plugin { // This path is not flavor specific and must only be added once. // If support for flavors is added to native assets, then they must only be added // once per flavor; see https://github.com/dart-lang/native/issues/1359. - String nativeAssetsDir = "${project.buildDir}/../native_assets/android/jniLibs/lib/" + String nativeAssetsDir = "${project.layout.buildDirectory.get()}/../native_assets/android/jniLibs/lib/" project.android.sourceSets.main.jniLibs.srcDir(nativeAssetsDir) configurePlugins(project) detectLowCompileSdkVersionOrNdkVersion() 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 index fa85aa17677..5f54ccc62b4 100644 --- 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 @@ -14,7 +14,7 @@ task clean(type: Delete) { const String _lazyCleanTaskDeclaration = ''' tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } '''; diff --git a/packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.kts.tmpl b/packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.kts.tmpl index ffa69a07cfe..89176ef44e8 100644 --- a/packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.kts.tmpl +++ b/packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.kts.tmpl @@ -5,14 +5,17 @@ allprojects { } } -rootProject.buildDir = file("../build") +val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +rootProject.layout.buildDirectory.value(newBuildDir) + subprojects { - project.buildDir = file("${rootProject.buildDir}/${project.name}") + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) } subprojects { project.evaluationDependsOn(":app") } tasks.register("clean") { - delete(rootProject.buildDir) + delete(rootProject.layout.buildDirectory) } diff --git a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl b/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl index ffa69a07cfe..89176ef44e8 100644 --- a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl +++ b/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl @@ -5,14 +5,17 @@ allprojects { } } -rootProject.buildDir = file("../build") +val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +rootProject.layout.buildDirectory.value(newBuildDir) + subprojects { - project.buildDir = file("${rootProject.buildDir}/${project.name}") + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) } subprojects { project.evaluationDependsOn(":app") } tasks.register("clean") { - delete(rootProject.buildDir) + delete(rootProject.layout.buildDirectory) } diff --git a/packages/flutter_tools/templates/module/android/deferred_component/build.gradle.tmpl b/packages/flutter_tools/templates/module/android/deferred_component/build.gradle.tmpl index 3bc24b0d711..71a027bbd15 100644 --- a/packages/flutter_tools/templates/module/android/deferred_component/build.gradle.tmpl +++ b/packages/flutter_tools/templates/module/android/deferred_component/build.gradle.tmpl @@ -29,8 +29,8 @@ android { sourceSets { applicationVariants.all { variant -> - main.assets.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_assets" - main.jniLibs.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_libs" + main.assets.srcDirs += "${project.layout.buildDirectory}/intermediates/flutter/${variant.name}/deferred_assets" + main.jniLibs.srcDirs += "${project.layout.buildDirectory}/intermediates/flutter/${variant.name}/deferred_libs" } } 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 index 7136a3c5bd3..c72fbc37ea8 100644 --- 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 @@ -181,7 +181,7 @@ task clean(type: Delete) { expect(bufferLogger.traceText, contains('Migrating "clean" Gradle task to lazy declaration style.')); expect(topLevelGradleBuildFile.readAsStringSync(), equals(''' tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } ''')); }); diff --git a/packages/flutter_tools/test/integration.shard/android_gradle_deprecated_plugin_apply_test.dart b/packages/flutter_tools/test/integration.shard/android_gradle_deprecated_plugin_apply_test.dart index 992308d8c0b..5964218eed6 100644 --- a/packages/flutter_tools/test/integration.shard/android_gradle_deprecated_plugin_apply_test.dart +++ b/packages/flutter_tools/test/integration.shard/android_gradle_deprecated_plugin_apply_test.dart @@ -82,16 +82,16 @@ allprojects { } } -rootProject.buildDir = '../build' +rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) } subprojects { project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } '''); appBuildGradle.writeAsStringSync(r''' diff --git a/packages/flutter_tools/test/integration.shard/test_data/deferred_components_config.dart b/packages/flutter_tools/test/integration.shard/test_data/deferred_components_config.dart index c08fc314384..bd7e378b1e5 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/deferred_components_config.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/deferred_components_config.dart @@ -83,8 +83,8 @@ class DeferredComponentModule { sourceSets { applicationVariants.all { variant -> - main.assets.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_assets" - main.jniLibs.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_libs" + main.assets.srcDirs += "${project.layout.buildDirectory.get()}/intermediates/flutter/${variant.name}/deferred_assets" + main.jniLibs.srcDirs += "${project.layout.buildDirectory.get()}/intermediates/flutter/${variant.name}/deferred_libs" } } 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 d6c6ba823a5..fe21e100fb0 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 @@ -126,16 +126,16 @@ class BasicDeferredComponentsConfig extends DeferredComponentsConfig { } } - rootProject.buildDir = '../build' + rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) } subprojects { project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } '''; diff --git a/packages/flutter_tools/test/integration.shard/test_data/plugin_project.dart b/packages/flutter_tools/test/integration.shard/test_data/plugin_project.dart index 50eefa72cf2..d06f45c8610 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/plugin_project.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/plugin_project.dart @@ -36,9 +36,9 @@ allprojects { mavenCentral() } } -rootProject.buildDir = '../build' +rootProject.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir("../../build").get()) subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" + project.layout.buildDirectory.value(rootProject.layout.buildDirectory.dir(project.name).get()) } subprojects { project.evaluationDependsOn(':app') @@ -51,7 +51,7 @@ subprojects { } } tasks.register("clean", Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } ''';