diff --git a/src/se/vidstige/jadb/AdbServerLauncher.java b/src/se/vidstige/jadb/AdbServerLauncher.java new file mode 100644 index 0000000..762197f --- /dev/null +++ b/src/se/vidstige/jadb/AdbServerLauncher.java @@ -0,0 +1,34 @@ +package se.vidstige.jadb; + +import java.io.IOException; + +/** + * Launches the ADB server + */ +public class AdbServerLauncher { + private Runtime runtime; + + public AdbServerLauncher() { + this(Runtime.getRuntime()); + } + + public AdbServerLauncher(Runtime runtime) { + this.runtime = runtime; + } + + private String findAdbExecutable() { + String android_home = System.getenv("ANDROID_HOME"); + if (android_home == null || android_home.equals("")) { + return "adb"; + } + + return android_home + "/platform-tools/adb"; + } + + public void launch() throws IOException, InterruptedException { + Process p = runtime.exec(new String[]{findAdbExecutable(), "start-server"}); + p.waitFor(); + int exitValue = p.exitValue(); + if (exitValue != 0) throw new IOException("adb exited with exit code: " + exitValue); + } +} diff --git a/test/se/vidstige/jadb/test/RealDeviceTestCases.java b/test/se/vidstige/jadb/test/RealDeviceTestCases.java index 689c404..f36c746 100644 --- a/test/se/vidstige/jadb/test/RealDeviceTestCases.java +++ b/test/se/vidstige/jadb/test/RealDeviceTestCases.java @@ -1,11 +1,9 @@ package se.vidstige.jadb.test; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; -import se.vidstige.jadb.JadbConnection; -import se.vidstige.jadb.JadbDevice; -import se.vidstige.jadb.JadbException; -import se.vidstige.jadb.RemoteFile; +import se.vidstige.jadb.*; import java.io.File; import java.io.FileOutputStream; @@ -16,6 +14,17 @@ public class RealDeviceTestCases { private JadbConnection jadb; + @BeforeClass + public static void tryToStartAdbServer() { + try { + new AdbServerLauncher().launch(); + } catch (IOException e) { + System.out.println("Could not start adb-server"); + } catch (InterruptedException e) { + System.out.println("Could not start adb-server"); + } + } + @Before public void connect() throws IOException { try {