java - 从 java 执行 adb 命令

标签 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() 方法但没有存储它返回的退出代码。现在我这样做了:

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

关于java - 从 java 执行 adb 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11137131/

相关文章:

android - Android 版 Google 地球

android - 打开HAX设备失败! HAX 不工作,模拟器在仿真模式下运行

java - 为什么我必须将每个 Thread.sleep() 调用包装在 try/catch 语句中?

java - 组织java类的成员

android - react 原生 firebase 与 expo 裸应用程序的集成

android - 没有 Dagger2 为 JUnit 测试生成文件

android - 无法将 Android 模拟器连接到 React Native 调试器

java - 如何调用servlet?

java - 将线程安全委托(delegate)给 ConcurrentMap 和 AtomicInteger

android - 如何配置 ProGuard 以保留内部类成员的名称?