aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-06-19 15:25:53 -0400
committerGravatar Kristina Chodorow <kchodorow@google.com>2017-06-20 14:35:17 -0400
commit42b2c9ab57c8e593623138f414b55bcc2339f64d (patch)
tree1de83ffd72f52f46a6e577f6424554a7ce186170
parent0eb94909892daf82a3340c680dd1fa088101ee10 (diff)
Pass the unsigned apk and the keystore to ApkProvider.
RELNOTES: None PiperOrigin-RevId: 159460633
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ApkProvider.java14
3 files changed, 30 insertions, 3 deletions
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() {}
}