从java执行adb命令

时间:2012-06-21 11:26:36

标签: java android android-emulator adb

我想将文件从我的Java程序推送到Android模拟器。现在,我可以使用ProcessBuilder启动模拟器,并捕获logcat消息。但是每当我尝试在进程构建器中使用adb push命令时,进程都会挂起,并且不会生成任何输出。

代码:

try {
    ProcessBuilder proc = new ProcessBuilder("D://android-sdk//platform-tools//adb.exe",
                                             "push D:\\final.xml /mnt/sdcard/final.xml");
    Process p = proc.start();
    BufferedReader br2 = new BufferedReader(new InputStreamReader(p.getInputStream()));
    while ( (line = br2.readLine()) != null)
        System.out.println(line);
} catch (Exception e) {
    System.err.println("Error");
}

编辑: - 找到了可能的解决方案。我正在使用Process.waitFor()方法但不存储其返回的exitcode。现在我这样做了:

int exitVal = p.waitFor();

一切都充满了魅力。

和@Marc Van Daele 感谢您的输入。根据我的经验,ProcessBuilder以两种方式工作,即。您可以使用以空格或逗号分隔的参数。 :)

1 个答案:

答案 0 :(得分:4)

这不应该是像

这样的单独参数
ProcessBuilder proc = new ProcessBuilder("D://android-sdk//platform-tools//adb.exe", "push",  "D:\\final.xml", "/mnt/sdcard/final.xml");