summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Jo <micahjo@google.com>2023-05-09 13:30:35 -0700
committerMicah Jo <micahjo@google.com>2023-05-12 21:37:39 +0000
commitfe237b0f6cadfc638e51e9cace6c1eee5dab4940 (patch)
treec6b7176ba34e2a5d37460920dea417fc1c19a49a
parent20971176705978ebfe0ead5aa423162762238aeb (diff)
downloadbase-fe237b0f6cadfc638e51e9cace6c1eee5dab4940.tar.gz
Disallow resourceConfigurations with
automatic locale generation. There is an issue when both are enabled where languages not specified in resConfig but generated in locale config will use the default language instead of the specified one. Bug: 277901729 Test: LocaleConfigGenerationTest Change-Id: I66f510c05977fc147bf78e3da9843e816acbb854 (cherry picked from commit f8a2cbbc3258ff6412fc11e1bace98fe944f2b35)
-rw-r--r--build-system/gradle-core/src/main/java/com/android/build/gradle/internal/tasks/ApplicationTaskManager.kt13
-rw-r--r--build-system/integration-test/application/src/test/java/com/android/build/gradle/integration/application/LocaleConfigGenerationTest.kt19
2 files changed, 31 insertions, 1 deletions
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/tasks/ApplicationTaskManager.kt b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/tasks/ApplicationTaskManager.kt
index d2fc0fabd4..9e8b0c1b13 100644
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/tasks/ApplicationTaskManager.kt
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/tasks/ApplicationTaskManager.kt
@@ -51,6 +51,8 @@ import com.android.build.gradle.tasks.GenerateLocaleConfigTask
import com.android.build.gradle.tasks.sync.ApplicationVariantModelTask
import com.android.build.gradle.tasks.sync.AppIdListTask
import com.android.builder.core.ComponentType
+import com.android.builder.errors.IssueReporter
+import com.android.builder.internal.aapt.AaptUtils
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.Task
@@ -121,6 +123,17 @@ class ApplicationTaskManager(
taskFactory.register(CompileArtProfileTask.CreationAction(variant))
if (variant.generateLocaleConfig) {
+ val resourceConfigs = variant.androidResourcesCreationConfig?.resourceConfigurations
+ if (!resourceConfigs.isNullOrEmpty() &&
+ AaptUtils.getNonDensityResConfigs(resourceConfigs).toList().isNotEmpty()) {
+ variant.services.issueReporter.reportError(
+ IssueReporter.Type.GENERIC,
+ "You cannot specify languages in resource configurations when " +
+ "automatic locale generation is enabled. To use resource configurations, " +
+ "please provide the locale config manually: " +
+ "https://d.android.com/r/tools/locale-config"
+ )
+ }
taskFactory.register(ExtractSupportedLocalesTask.CreationAction(variant))
taskFactory.register(GenerateLocaleConfigTask.CreationAction(variant))
}
diff --git a/build-system/integration-test/application/src/test/java/com/android/build/gradle/integration/application/LocaleConfigGenerationTest.kt b/build-system/integration-test/application/src/test/java/com/android/build/gradle/integration/application/LocaleConfigGenerationTest.kt
index c7e5139a87..f52a654492 100644
--- a/build-system/integration-test/application/src/test/java/com/android/build/gradle/integration/application/LocaleConfigGenerationTest.kt
+++ b/build-system/integration-test/application/src/test/java/com/android/build/gradle/integration/application/LocaleConfigGenerationTest.kt
@@ -401,7 +401,7 @@ class LocaleConfigGenerationTest {
ScannerSubject.assertThat(result.stderr).contains("No resources.properties file found.")
}
- @Test
+ @Test
fun `Test multiple resources properties files error`() {
buildDsl(generateLocaleConfig = true)
@@ -429,6 +429,23 @@ class LocaleConfigGenerationTest {
}
@Test
+ fun `Test error when using resource configurations`() {
+ buildDsl(generateLocaleConfig = true)
+
+ project.getSubproject("app").buildFile.appendText("""
+ android.defaultConfig.resourceConfigurations += ["en"]
+ """.trimIndent())
+
+ val result = project.executor().expectFailure().run("assembleDebug")
+
+ ScannerSubject.assertThat(result.stderr).contains(
+ "You cannot specify languages in resource configurations when " +
+ "automatic locale generation is enabled. To use resource configurations, " +
+ "please provide the locale config manually: " +
+ "https://d.android.com/r/tools/locale-config")
+ }
+
+ @Test
fun `Test that locale config xml is in apk res`() {
buildDsl(generateLocaleConfig = true)