From 71cb4747be1056aad21336044e3da3cd039ab4bf Mon Sep 17 00:00:00 2001 From: asteinb Date: Tue, 17 Jul 2018 10:30:22 -0700 Subject: Default to doing decoupled data processing in Android configuration Also, fix a few NPEs this apparently exposes by having android_test and android_binary mobile_install explicitly specify merged resources. RELNOTES: none PiperOrigin-RevId: 204933164 --- .../build/lib/rules/android/AndroidBinaryMobileInstall.java | 2 ++ .../devtools/build/lib/rules/android/AndroidConfiguration.java | 2 +- .../devtools/build/lib/rules/android/ProcessedAndroidData.java | 6 +++++- 3 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/android') diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java index b344411ba8..88877f93ec 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java @@ -78,6 +78,7 @@ public final class AndroidBinaryMobileInstall { manifest.addMobileInstallStubApplication(ruleContext), ruleContext.getImplicitOutputArtifact( AndroidRuleClasses.ANDROID_INCREMENTAL_RESOURCES_APK), + getMobileInstallArtifact(ruleContext, "merged_incremental_resources.bin"), "incremental", applicationManifest.getManifestValues()) // Intentionally skip building an R class JAR - incremental binaries handle this @@ -90,6 +91,7 @@ public final class AndroidBinaryMobileInstall { dataContext, manifest.createSplitManifest(ruleContext, "android_resources", false), getMobileInstallArtifact(ruleContext, "android_resources.ap_"), + getMobileInstallArtifact(ruleContext, "merged_split_resources.bin"), "incremental_split", applicationManifest.getManifestValues()) // Intentionally skip building an R class JAR - incremental binaries handle this diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java index 734f96e0c2..00134a7ca2 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java @@ -803,7 +803,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment @Option( name = "android_decouple_data_processing", - defaultValue = "false", + defaultValue = "true", documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, effectTags = { OptionEffectTag.BAZEL_INTERNAL_CONFIGURATION, diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java index 0a1871051a..484d29649d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java @@ -113,13 +113,15 @@ public class ProcessedAndroidData { AndroidDataContext dataContext, StampedAndroidManifest manifest, Artifact apkOut, + Artifact mergedResourcesOut, String proguardPrefix, Map manifestValues) throws RuleErrorException { AndroidResourcesProcessorBuilder builder = builderForTopLevelTarget(dataContext, manifest, proguardPrefix, manifestValues) - .setApkOut(apkOut); + .setApkOut(apkOut) + .setMergedResourcesOut(mergedResourcesOut); return buildActionForBinary( dataContext, @@ -208,6 +210,8 @@ public class ProcessedAndroidData { AndroidResourcesProcessorBuilder builder = builderForNonIncrementalTopLevelTarget( dataContext, manifest, ImmutableMap.of(), aaptVersion) + .setMergedResourcesOut( + dataContext.createOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_ZIP)) .setMainDexProguardOut( AndroidBinary.createMainDexProguardSpec( dataContext.getLabel(), dataContext.getActionConstructionContext())) -- cgit v1.2.3