猛禽洛的程式筆記庫

[Android] 將Logcat的資訊儲存到本機端

在開發APP的過程中,我們都會用Android Studio的Logcat的功能來做Debug

但若是使用網路與實體裝置連線(有些設備無法使用USB有線)要測試網路斷線通能時,或是會與電腦的Android Studio斷線的測試,這時候Logcat的資料就會看不到了,有時候時間過太久就把Logcat的暫存全洗掉了。

這時候可以用Runtime的exec功能來將Logcat的資訊儲存在裝置裡面,事後再撈出來看。

 

PS.此功能不會自動取得權限、也不會自動建立資料夾路徑,這些前置動作需要另外處理。

try {
  Process process = Runtime.getRuntime().exec("logcat -d");
  //儲存的路徑與檔名,若有資料夾需要自己先處理好
  process = Runtime.getRuntime().exec( "logcat -f " + "/storage/emulated/0/"+"Log.txt");
}catch(Exception e){
  e.printStackTrace();
}

這樣就會自動建立一個檔案了!內容如下:

12-24 15:25:10.156 26503 26503 I ps      : type=1400 audit(0.0:1113): avc: denied { open } for path="/proc/2399/cmdline" dev="proc" ino=712 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:logd:s0 tclass=file permissive=1
12-24 15:25:10.258 26513 26513 I art     : Not late-enabling -Xcheck:jni (already on)
12-24 15:25:10.258 26513 26513 I art     : Late-enabling JIT
12-24 15:25:10.266 26513 26513 I art     : JIT created with code_cache_capacity=2MB compile_threshold=400
12-24 15:25:10.414 26513 26513 W art     : Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
12-24 15:25:10.478 26513 26513 I art     : Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>
12-24 15:25:10.478 26513 26513 I art     : Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>
12-24 15:25:10.671 26513 26513 D 15:25:10.670/PermissionSuccess: 權限取得成功

以後Debug就方便多了!

 

-END-

2 comments

    1. Hi Kkbetter,現在才看到XD
      1.請問有辦法將Log.txt用類似的方式存在電腦中嗎?
      這個主要是離線存Log用的,一般是在沒有連接電腦的情況下快速蒐集系統Log,如果有接著Android Studio他本身就能把Log存在電腦中,不然就是要手動複製(或用其他類似方式)弄到電腦裡面。

      2.此種方式是不是無法添加過濾器 如 logcat -f *:I 之類的
      這種方法是對系統用命令的方式執行,所以應是能使用過濾器等附加指令的。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *