delay looking for android devices
diff --git a/packages/flutter_tools/lib/src/install.dart b/packages/flutter_tools/lib/src/install.dart
index f8f4523..f7ee8fc 100644
--- a/packages/flutter_tools/lib/src/install.dart
+++ b/packages/flutter_tools/lib/src/install.dart
@@ -14,15 +14,17 @@
 class InstallCommand extends Command {
   final name = 'install';
   final description = 'Install your Flutter app on attached devices.';
+
   AndroidDevice android = null;
-  InstallCommand([this.android]) {
-    if (android == null) {
-      android = new AndroidDevice();
-    }
-  }
+
+  InstallCommand([this.android]);
 
   @override
   Future<int> run() async {
+    if (android == null) {
+      android = new AndroidDevice();
+    }
+
     if (install()) {
       return 0;
     } else {
diff --git a/packages/flutter_tools/lib/src/listen.dart b/packages/flutter_tools/lib/src/listen.dart
index 47a3897..31b00cf 100644
--- a/packages/flutter_tools/lib/src/listen.dart
+++ b/packages/flutter_tools/lib/src/listen.dart
@@ -34,14 +34,14 @@
         defaultsTo: '.',
         abbr: 't',
         help: 'Target app path or filename to start.');
-
-    if (android == null) {
-      android = new AndroidDevice();
-    }
   }
 
   @override
   Future<int> run() async {
+    if (android == null) {
+      android = new AndroidDevice();
+    }
+
     if (argResults.rest.length > 0) {
       watchCommand = _initWatchCommand(argResults.rest);
     } else {
diff --git a/packages/flutter_tools/lib/src/logs.dart b/packages/flutter_tools/lib/src/logs.dart
index 841681f..d3f9081 100644
--- a/packages/flutter_tools/lib/src/logs.dart
+++ b/packages/flutter_tools/lib/src/logs.dart
@@ -21,13 +21,14 @@
     argParser.addFlag('clear',
         negatable: false,
         help: 'Clear log history before reading from logs (Android only).');
-    if (android == null) {
-      android = new AndroidDevice();
-    }
   }
 
   @override
   Future<int> run() async {
+    if (android == null) {
+      android = new AndroidDevice();
+    }
+
     Future<int> androidLogProcess = null;
     if (android.isConnected()) {
       androidLogProcess = android.logs(clear: argResults['clear']);
diff --git a/packages/flutter_tools/lib/src/start.dart b/packages/flutter_tools/lib/src/start.dart
index acca258..dcc381e 100644
--- a/packages/flutter_tools/lib/src/start.dart
+++ b/packages/flutter_tools/lib/src/start.dart
@@ -33,13 +33,14 @@
         defaultsTo: '.',
         abbr: 't',
         help: 'Target app path or filename to start.');
-    if (android == null) {
-      android = new AndroidDevice();
-    }
   }
 
   @override
   Future<int> run() async {
+    if (android == null) {
+      android = new AndroidDevice();
+    }
+
     bool startedSomewhere = false;
     bool poke = argResults['poke'];
     if (!poke) {
diff --git a/packages/flutter_tools/lib/src/stop.dart b/packages/flutter_tools/lib/src/stop.dart
index e2f288c..c3edaf6 100644
--- a/packages/flutter_tools/lib/src/stop.dart
+++ b/packages/flutter_tools/lib/src/stop.dart
@@ -18,14 +18,14 @@
   final description = 'Stop your Flutter app on all attached devices.';
   AndroidDevice android = null;
 
-  StopCommand([this.android]) {
-    if (android == null) {
-      android = new AndroidDevice();
-    }
-  }
+  StopCommand([this.android]);
 
   @override
   Future<int> run() async {
+    if (android == null) {
+      android = new AndroidDevice();
+    }
+
     if (stop()) {
       return 0;
     } else {
diff --git a/packages/flutter_tools/lib/src/trace.dart b/packages/flutter_tools/lib/src/trace.dart
index 4fbe1a2..8304851 100644
--- a/packages/flutter_tools/lib/src/trace.dart
+++ b/packages/flutter_tools/lib/src/trace.dart
@@ -27,13 +27,14 @@
     argParser.addFlag('stop', negatable: false, help: 'Stop tracing.');
     argParser.addOption('duration',
         defaultsTo: '10', abbr: 'd', help: 'Duration in seconds to trace.');
-    if (android == null) {
-      android = new AndroidDevice();
-    }
   }
 
   @override
   Future<int> run() async {
+    if (android == null) {
+      android = new AndroidDevice();
+    }
+
     if (!android.isConnected()) {
       _logging.warning('No device connected, so no trace was completed.');
       return 1;