簡體   English   中英

如何在我的設備上獲取logcat以顯示來自所有進程的日志

[英]How can I get logcat on my device to show logs from all processes

我正在嘗試編寫一個能夠讀取設備上所有日志的應用程序。 我有一個客戶端/服務架構,我看到來自客戶端和服務進程的日志消息,但我沒有看到來自手機上任何其他應用程序的任何消息(我確實看到使用桌面logcat的其他消息)。

我需要root嗎?

代碼片段

表現

<uses-permission android:name="android.permission.READ_LOGS" />

日志閱讀器

Runtime.getRuntime().exec("logcat -c").waitFor();

Process process = Runtime.getRuntime().exec("logcat -v long *:*");
BufferedReader reader = 
    new BufferedReader(new InputStreamReader(process.getInputStream()));
while (true) {
    String nextLine = reader.readLine();
    if (!nextLine.contains("LogWatcher-D")) {
        Log.w("LogWatcher-D", "See: " + nextLine);
    }

    // Process line
}

在Android 4.1+上,您只能訪問由進程記錄的日志消息,除非您持有READ_LOGS權限。 該權限要求您的應用程序必須使用簽署設備固件的相同簽名密鑰進行簽名,或者您的應用程序安裝在系統分區上。

要以編程方式從其他應用程序讀取日志,您需要在所有apks的清單文件中分配相同的android:sharedUserId。

還有另一種方法可以訪問沒有root的所有應用程序的所有日志。 它需要啟用遠程調試。 看看開源無根Logcat應用程序

暫無
暫無

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

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