简体   繁体   English

从java执行adb命令

[英]Execute adb commands from java

I want to push a file from my Java program to an Android emulator. 我想将文件从我的Java程序推送到Android模拟器。 Now, I can launch the emulator by using ProcessBuilder and also trap the logcat messages. 现在,我可以使用ProcessBuilder启动模拟器,并捕获logcat消息。 But whenever I'm trying to use the adb push command in process builder, the process hangs and no output is generated. 但是每当我尝试在进程构建器中使用adb push命令时,进程都会挂起并且不会生成任何输出。

The code: 代码:

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");
}

EDIT:- Found the probabble solution. 编辑: - 找到可能的解决方案。 I was using Process.waitFor() method but not storing its returned exitcode. 我正在使用Process.waitFor()方法但不存储其返回的exitcode。 Now as i did this: 现在我这样做了:

int exitVal = p.waitFor();

Everything worked as a charm. 一切都充满了魅力。

And @Marc Van Daele Thanks for your input. 和@Marc Van Daele感谢您的投入。 as per my experience, ProcessBuilder works in both ways ie. 根据我的经验,ProcessBuilder以两种方式工作,即。 You can use arguments separated by spaces or by commas. 您可以使用以空格或逗号分隔的参数。 :) :)

不应该像这样单独的论点

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM