@Override
  public void startSelendroid(
    AndroidApp aut,
    int port,
    SelendroidCapabilities capabilities) throws AndroidSdkException {
    remotePort = port;

    List<String> argList = Lists.newArrayList(
        "-e", SelendroidArguments.MAIN_ACTIVITY, aut.getMainActivity(),
        "-e", SelendroidArguments.SERVER_PORT, Integer.toString(port));

    if (capabilities.getUseJUnitBootstrap()) {
      argList.addAll(Lists.newArrayList(
        "-e", "timeout_msec", "0", // No timeout for the looper thread
        "-e", "disableAnalytics", "true")); // AndroidJUnitRunner sends things to Google Analytics by default
    }
    if (capabilities.getSelendroidExtensions() != null) {
      argList.addAll(Lists.newArrayList("-e", SelendroidArguments.LOAD_EXTENSIONS, "true"));
      if (capabilities.getBootstrapClassNames() != null) {
        argList.addAll(Lists.newArrayList("-e", SelendroidArguments.BOOTSTRAP, capabilities.getBootstrapClassNames()));
      }
    }

    if (capabilities.getUseJUnitBootstrap()) {
      argList.add("io.selendroid." + aut.getBasePackage() + "/io.selendroid.server.JUnitRunnerInstrumentation");
    } else {
      argList.add("io.selendroid." + aut.getBasePackage() + "/io.selendroid.server.SelendroidInstrumentation");
    }

    runInstrumentCommand(argList.toArray(new String[argList.size()]));

    localPort = forwardPort(capabilities.getUseRandomLocalPort() ? 0 : port, port);

    if(isLoggingEnabled()) {
      startLogging();
    }
  }
Constructor mean to be used with Android Hardware devices because a reference to the
{@link IDevice} will be available immediately after they are connected.

@param device
selendroid-standalone/src/main/java/io/selendroid/standalone/android/impl/AbstractDevice.java