From 77777d1a769e938839b82c65ff320e09b1e7a715 Mon Sep 17 00:00:00 2001 From: ajmichael Date: Wed, 4 Apr 2018 09:37:31 -0700 Subject: Fix crash from mobile-install with --device but no --adb_args. Fixes #4922. RELNOTES: None PiperOrigin-RevId: 191602647 --- .../lib/rules/android/WriteAdbArgsAction.java | 24 ++++++++++++---------- .../mobileinstall/MobileInstallCommand.java | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java b/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java index 1f995f140c..a160811227 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java @@ -18,7 +18,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.util.Fingerprint; @@ -113,6 +112,16 @@ public final class WriteAdbArgsAction extends AbstractFileWriteAction { expansion = {"--start=DEBUG"} ) public Void debugApp; + + public ImmutableList getAdbArgs() { + ImmutableList.Builder allAdbArgs = ImmutableList.builder(); + allAdbArgs.addAll(adbArgs); + if (!device.isEmpty()) { + allAdbArgs.add("-s"); + allAdbArgs.add(device); + } + return allAdbArgs.build(); + } } public WriteAdbArgsAction(ActionOwner owner, Artifact outputFile) { @@ -120,16 +129,14 @@ public final class WriteAdbArgsAction extends AbstractFileWriteAction { } @Override - public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) - throws IOException, InterruptedException, ExecException { + public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) { Options options = ctx.getOptions().getOptions(Options.class); - final List args = options.adbArgs; final String adb = options.adb; - final String device = options.device; final String incrementalInstallVerbosity = options.incrementalInstallVerbosity; final StartType start = options.start; final String userHomeDirectory = ctx.getContext(WriteAdbArgsActionContext.class).getUserHomeDirectory(); + ImmutableList adbArgs = options.getAdbArgs(); return new DeterministicWriter() { @Override @@ -140,12 +147,7 @@ public final class WriteAdbArgsAction extends AbstractFileWriteAction { ps.printf("--adb=%s\n", adb); } - if (!device.isEmpty()) { - args.add("-s"); - args.add(device); - } - - for (String arg : args) { + for (String arg : adbArgs) { ps.printf("--extra_adb_arg=%s\n", arg); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java index c65b401c12..6484bbe3f2 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java @@ -262,7 +262,7 @@ public class MobileInstallCommand implements BlazeCommand { if (!adbOptions.adb.isEmpty()) { cmdLine.add("--adb=" + adbOptions.adb); } - for (String adbArg : adbOptions.adbArgs) { + for (String adbArg : adbOptions.getAdbArgs()) { if (!adbArg.isEmpty()) { cmdLine.add("--adb_arg=" + adbArg); } -- cgit v1.2.3