通过java从adb获取来自adb的logcat

时间:2015-11-02 11:19:15

标签: java android adb

我想通过java通过wifi获取从android设备到PC的logcat。程序将按时间获取logcat,并在单击按钮时停止。

所以,我可以通过wifi连接到android并获取logcat:

adb -s [ip_address]:5555 logcat -v time > D:\logcat.txt

此命令在cmd中运行良好。当我按 Ctrl + C 时它会停止。但是当我在java代码中运行此命令时。

Process proc;
String command = "adb -s [ip_address]:5555 logcat -v time > D:\\Test_logcat.txt";
Runtime rt = Runtime.getRuntime();
    try {
        proc = rt.exec(command);
        BufferedReader stdInput = new BufferedReader(new InputStreamReader(
                proc.getInputStream()));
        BufferedReader stdError = new BufferedReader(new InputStreamReader(
                proc.getErrorStream()));

        String line = null;
        while ((line = stdInput.readLine()) != null)
            System.out.println(line);

        while ((line = stdError.readLine()) != null) {
            System.out.println(line);
        }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }

它引发了这个错误:

/system/bin/sh: can't create D:\Test_logcat.txt: Read-only file system

行。我搜索谷歌并得到这个问题的答案。 Here ,他们解释说:

In your command line example, you are running the ADB command from the Android terminal with / as current directory. So Android tries to write the output to /logcat.txt, which fails. 

但是,我不明白为什么这个命令可以在cmd中正常运行,但不能在java程序中运行。这里的诀窍是什么?

此外,你们这些好人可以帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

尝试使用logcat -v time -d > /mnt/local/log.txt

注意:您可以存储数据的文件夹取决于设备,是否需要更改文件路径。