diff options
author | 2018-04-04 09:37:31 -0700 | |
---|---|---|
committer | 2018-04-04 09:38:38 -0700 | |
commit | 77777d1a769e938839b82c65ff320e09b1e7a715 (patch) | |
tree | a1785162cade0bff9ed837077c0b3ed2d073d58b /src/main/java/com/google/devtools/build/lib | |
parent | 8c2b4816ca4406d4f2843c49022794a76db72f46 (diff) |
Fix crash from mobile-install with --device but no --adb_args.
Fixes #4922.
RELNOTES: None
PiperOrigin-RevId: 191602647
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java | 24 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java | 2 |
2 files changed, 14 insertions, 12 deletions
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<String> getAdbArgs() { + ImmutableList.Builder<String> 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<String> 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<String> 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); } |