从java执行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以两种方式工作,即。 您可以使用以空格或逗号分隔的参数。 🙂

这不应该是单独的论点

 ProcessBuilder proc = new ProcessBuilder("D://android-sdk//platform-tools//adb.exe", "push", "D:\\final.xml", "/mnt/sdcard/final.xml");