执行此方法后,环境将出现null

时间:2016-03-16 06:56:02

标签: android adb

public static String[] getAdbLogCat() {
    try {
        String line;
        ArrayList<String> arrList = new ArrayList<String>();
        Process p = Runtime.getRuntime().exec("D:/androidsoftware/android sdk/platform-tools/adb shell logcat");
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

        while ((line = br.readLine()) != null) {
            System.out.println(line);
            Log.e("ADB TEST",line);
        }

        return (String[])arrList.toArray(new String[0]);
    } catch (IOException e) {
        System.err.println(e);
        e.printStackTrace();
        return new String[]{};
    }
}

执行此方法后,环境为null。我在模拟器中运行它。如果我想在移动设备上运行,那么什么是adb路径?我的要求是阅读adb日志并将崩溃数据保存到一个表中。我的android sdk位于d drive.Or还有其他方法从android系统日志中获取我的应用程序崩溃日志。

log cat error

2 个答案:

答案 0 :(得分:0)

您无法在模拟器上运行的应用程序中运行计算机上的可执行程序。您只能运行模拟器自己空间中的程序。模拟器就像一个实际的设备,你永远不会期望设备能够到达外部来执行其他过程。

答案 1 :(得分:0)

您需要一个桥接来从您的Android应用程序联系主机环境。

示例项目:https://github.com/toantran-ea/adb-ci-bridge

您可以使用该库中的新端点扩展该功能。并从您的应用程序拨打电话。

使用curl的示例请求:

curl -H "Content-Type: application/json" -X POST -d '{"tag":"sample tag value","trace":"TooAwesomeException foo bar"}' http://localhost:9001/screenshot

这在某些有限的上下文中使用,例如在Continuous Sever上运行时,您需要一些实用程序功能来与主机联系(用于屏幕截图,报告或其他内容)。