aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Alex Humesky <ahumesky@google.com>2016-01-11 23:08:58 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-01-12 14:22:00 +0000
commitbd210f0038b692e686caa0e140fb0681eccdc010 (patch)
tree7f644ce88a43f849a8dd0db781391f0b7821f857 /src/main
parent6ba5c97e9ad94b307b3383d9d18c9ef30e3f8322 (diff)
Simplifies passing the debug key to ApkBuilder.
-- MOS_MIGRATED_REVID=111892954
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidSemantics.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_repository_template.txt24
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java9
4 files changed, 13 insertions, 47 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidSemantics.java
index 07473b5a25..d1c03fb9c9 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidSemantics.java
@@ -14,12 +14,10 @@
package com.google.devtools.build.lib.bazel.rules.android;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.rules.android.AndroidCommon;
import com.google.devtools.build.lib.rules.android.AndroidIdeInfoProvider;
import com.google.devtools.build.lib.rules.android.AndroidSemantics;
@@ -82,21 +80,8 @@ public class BazelAndroidSemantics implements AndroidSemantics {
}
@Override
- public void addSigningArguments(
- RuleContext ruleContext, boolean sign, SpawnAction.Builder actionBuilder) {
- // ApkBuilder reads the signing key from the debug.keystore file, thus, we are at its mercy
- // for hermeticity. It turns out, it's not easy to coax ApkBuilder to read this key from a
- // file specified on the command line. Currently, it checks $ANDROID_SDK_HOME, $USER_HOME then
- // $HOME which means that we could make it hermetic by setting $ANDROID_SDK_HOME for the
- // ApkBuilder invocation.
- if (sign) {
- Artifact debugKeyStore = ruleContext.getPrerequisiteArtifact("$debug_keystore", Mode.HOST);
- actionBuilder
- .addInput(debugKeyStore)
- .setEnvironment(ImmutableMap.of("KEYSTORE", debugKeyStore.getExecPath().getPathString()));
- } else {
- actionBuilder.addArgument("-u");
- }
+ public Artifact getApkDebugSigningKey(RuleContext ruleContext) {
+ return ruleContext.getPrerequisiteArtifact("$debug_keystore", Mode.HOST);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_repository_template.txt b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_repository_template.txt
index df3d27b3ff..7c5d4684cf 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_repository_template.txt
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_repository_template.txt
@@ -117,7 +117,7 @@ android_sdk(
shrinked_android_jar = "platforms/android-%api_level%/android.jar",
annotations_jar = "tools/support/annotations.jar",
main_dex_classes = "build-tools/%build_tools_version%/mainDexClasses.rules",
- apkbuilder = ":apkbuilder_wrapper",
+ apkbuilder = "@bazel_tools//third_party/java/apkbuilder:embedded_apkbuilder",
zipalign = ":zipalign_binary",
android_jack = ":empty",
jack = ":fail",
@@ -222,28 +222,6 @@ java_import(
jars = [":dx_jar"],
)
-genrule(
- name = "gen_apkbuilder_wrapper_source",
- srcs = [],
- outs = ["apkbuilder_wrapper.sh"],
- cmd = "\n".join(["cat > $@ << 'EOF'",
- "#!/bin/bash -eu",
- "APKBUILDER=$${0}.runfiles/external/bazel_tools/third_party/java/apkbuilder/embedded_apkbuilder",
- "if [[ -n \"$${KEYSTORE-}\" ]]; then",
- " mkdir -p /tmp/keystore/.android",
- " cp $$KEYSTORE /tmp/keystore/.android/debug.keystore",
- " export ANDROID_SDK_HOME=/tmp/keystore",
- "fi",
- "exec $$APKBUILDER $$*",
- "EOF"]),
-)
-
-sh_binary(
- name = "apkbuilder_wrapper",
- srcs = ["apkbuilder_wrapper.sh"],
- data = ["@bazel_tools//third_party/java/apkbuilder:embedded_apkbuilder"],
-)
-
GOOGLE_PLAY_SERVICES_DIR = "extras/google/google_play_services/libproject/google-play-services_lib"
java_import(
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 64b078d200..de84cec192 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
@@ -1175,7 +1175,13 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
.addInput(javaResourceFile);
}
- semantics.addSigningArguments(ruleContext, sign, actionBuilder);
+ if (sign) {
+ Artifact signingKey = semantics.getApkDebugSigningKey(ruleContext);
+ actionBuilder.addArgument("-ks").addArgument(signingKey.getExecPathString());
+ actionBuilder.addInput(signingKey);
+ } else {
+ actionBuilder.addArgument("-u");
+ }
actionBuilder
.addArgument("-z")
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java
index e11c46038c..72f178e2fa 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java
@@ -18,7 +18,6 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.OutputGroupProvider;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.rules.java.JavaCommon;
import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
@@ -90,12 +89,10 @@ public interface AndroidSemantics {
ImmutableList<String> getDxJvmArguments();
/**
- * Adds command line arguments and inputs to a {@code ApkBuilder} invocation to control how to
- * sign the app.
+ * Returns the artifact for the debug key for signing the APK.
*/
- void addSigningArguments(
- RuleContext ruleContext, boolean sign, SpawnAction.Builder actionBuilder);
-
+ Artifact getApkDebugSigningKey(RuleContext ruleContext);
+
/**
* Add coverage instrumentation to the Java compilation of an Android binary.
* @throws InterruptedException