[英]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的安全性? 如何通過代碼獲取自己的應用啟動時間? 任何想法?
先嘗試這些
然后...
您總是可以簡單地將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.