在開發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-
請問有辦法將Log.txt用類似的方式存在電腦中嗎?
此種方式是不是無法添加過濾器 如 logcat -f *:I 之類的
Hi Kkbetter,現在才看到XD
1.請問有辦法將Log.txt用類似的方式存在電腦中嗎?
這個主要是離線存Log用的,一般是在沒有連接電腦的情況下快速蒐集系統Log,如果有接著Android Studio他本身就能把Log存在電腦中,不然就是要手動複製(或用其他類似方式)弄到電腦裡面。
2.此種方式是不是無法添加過濾器 如 logcat -f *:I 之類的
這種方法是對系統用命令的方式執行,所以應是能使用過濾器等附加指令的。