簡體   English   中英

當我運行“ logcat -s ActivityManager:I |為什么我不能得到不屬於我自己的應用程序的日志” grep顯示”與java.lang.Runtime

[英]Why can't I get any log which not belong to my own app when I run “logcat -s ActivityManager:I | grep Displayed” with java.lang.Runtime

現在,我想搜索一些數據以了解應用啟動時間。 我用adb shell可以做到這一點,就像這樣:

adb logcat -s ActivityManager:I | grep Displayed

結果如下:

I/ActivityManager(  949): Displayed com.gtr.sdkdemo/com.gtr.test.MainActivity: +303ms (total +1s546ms)

但是,當我使用java.lang.Runtime運行“ logcat -s ActivityManager:I |顯示的grep”時,我什么也得不到。

這是我的代碼:

private void runShellForAppLaunchTime() {
    Process logcatProcess = null;

    try {
        // adb logcat -s ActivityManager:I | grep Displayed
        String cmd = "logcat -s ActivityManager:I | grep Displayed";
        logcatProcess = Runtime.getRuntime().exec(cmd);

        mReader = new DataInputStream(logcatProcess.getInputStream());
        String line;
        while ((line = mReader.readUTF()) != null) {
            appLaunchTimeList.add(line);
        }
    } catch (IOException e){
        // nothing to do
    } catch (SecurityException |
            IllegalArgumentException |
            NullPointerException e) {
        e.printStackTrace();
    } finally {
        if (mReader != null) {
            try {
                mReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            mReader = null;
        }

        if (logcatProcess != null) {
            logcatProcess.destroy();
        }
    }
}

然后我運行“ logcat *:V”,就像我無法獲取不屬於我自己的應用程序的任何日志一樣。 是否考慮Google的安全性? 如何通過代碼獲取自己的應用啟動時間? 任何想法?

先嘗試這些

  1. 轉到設備選項卡,單擊您的設備。 然后返回到logcat選項卡
  2. 您可能已設置過濾器。
  3. 您可能查看了錯誤的軟件包。

然后...

您總是可以簡單地將logcat通過管道傳遞給grep:

$ adb logcat | grep 'known error substring'

如果您使用的是Windows,請改用find

C:\> adb logcat | find 'known error substring'

如果您想獲取任何不屬於您自己的應用程序的日志,它僅在有根設備上起作用。 也就是說,我無法通過這種方式獲得應用啟動時間。 有人為此目的提供一些想法嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM