From 42b2c9ab57c8e593623138f414b55bcc2339f64d Mon Sep 17 00:00:00 2001 From: Googler Date: Mon, 19 Jun 2017 15:25:53 -0400 Subject: Pass the unsigned apk and the keystore to ApkProvider. RELNOTES: None PiperOrigin-RevId: 159460633 --- .../devtools/build/lib/rules/android/AndroidBinary.java | 4 +++- .../build/lib/rules/android/AndroidConfiguration.java | 15 +++++++++++++++ .../devtools/build/lib/rules/android/ApkProvider.java | 14 ++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index d9b260a95f..a89b9dbd67 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -829,8 +829,10 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { ApkProvider.class, ApkProvider.create( zipAlignedApk, + unsignedApk, androidCommon.getInstrumentedJar(), - applicationManifest.getManifest())) + applicationManifest.getManifest(), + debugKeystore)) .addProvider(AndroidPreDexJarProvider.class, AndroidPreDexJarProvider.create(jarToDex)) .addProvider( AndroidFeatureFlagSetProvider.class, 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 77f047876a..2580493643 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 @@ -343,6 +343,15 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { ) public boolean incrementalDexingErrorOnMissedJars; + @Option( + name = "experimental_android_use_parallel_dex2oat", + category = "experimental", + defaultValue = "false", + optionUsageRestrictions = OptionUsageRestrictions.UNDOCUMENTED, + help = "Use dex2oat in parallel to possibly speed up android_test." + ) + public boolean useParallelDex2Oat; + // Do not use on the command line. // This flag is intended to be updated as we add supported flags to the incremental dexing tools @Option( @@ -622,6 +631,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { private final boolean useNocompressExtensionsOnApk; private final boolean exportsManifestDefault; private final boolean generateRobolectricRClass; + private final boolean useParallelDex2Oat; AndroidConfiguration(Options options, Label androidSdk) throws InvalidConfigurationException { this.sdk = androidSdk; @@ -655,6 +665,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { this.useNocompressExtensionsOnApk = options.useNocompressExtensionsOnApk; this.exportsManifestDefault = options.exportsManifestDefault; this.generateRobolectricRClass = options.generateRobolectricRClass; + this.useParallelDex2Oat = options.useParallelDex2Oat; if (!dexoptsSupportedInIncrementalDexing.contains("--no-locals")) { // TODO(bazel-team): Still needed? See DexArchiveAspect @@ -755,6 +766,10 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { return resourceFilter; } + public boolean useParallelDex2Oat() { + return useParallelDex2Oat; + } + boolean compressJavaResources() { return compressJavaResources; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApkProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApkProvider.java index 0242c4f172..d265fd3160 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ApkProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApkProvider.java @@ -25,13 +25,20 @@ import javax.annotation.Nullable; public abstract class ApkProvider implements TransitiveInfoProvider { public static ApkProvider create( - Artifact apk, @Nullable Artifact coverageMetdata, Artifact mergedManifest) { - return new AutoValue_ApkProvider(apk, coverageMetdata, mergedManifest); + Artifact apk, + Artifact unsignedApk, + @Nullable Artifact coverageMetdata, + Artifact mergedManifest, + Artifact keystore) { + return new AutoValue_ApkProvider(apk, unsignedApk, coverageMetdata, mergedManifest, keystore); } /** Returns the APK file built in the transitive closure. */ public abstract Artifact getApk(); + /** Returns the unsigned APK file built in the transitive closure. */ + public abstract Artifact getUnsignedApk(); + /** Returns the coverage metadata artifacts generated in the transitive closure. */ @Nullable public abstract Artifact getCoverageMetadata(); @@ -39,5 +46,8 @@ public abstract class ApkProvider implements TransitiveInfoProvider { /** Returns the merged manifest. */ public abstract Artifact getMergedManifest(); + /* The keystore that was used to sign the apk returned from {@see getApk() */ + public abstract Artifact getKeystore(); + ApkProvider() {} } -- cgit v1.2.3