android应用调试之如何保存logcat日志到本地

xiaoxiao2021-02-28  94

在开发时候,遇到某些设备没有开启adb服务,一时半会也不知道设备打开adb的隐藏页面,调试的时候就难免抓狂。完整的调试方案只能是把log写到本地,具体有两种调试方法 1. 封装一个utils.log接口,接口实现日志写入到本地文件; 2. 读取系统logcat信息,并写到本地。 第一种方法比较简单就不需要阐述了; 一、实现读取logcat日志 步骤一、在AndroidManifest.xml中添加读取日志的权限 <uses-permission android:name="android.permission.READ_LOGS" /> 步骤二、使用logcat命令 源码如下: try { java.lang.Process p = Runtime.getRuntime().exec("logcat"); final InputStream is = p.getInputStream(); new Thread() { @Override public void run() { FileOutputStream os = null; try { os = new FileOutputStream("/sdcard/writelog.txt"); int len = 0; byte[] buf = new byte[1024]; while (-1 != (len = is.read(buf))) { os.write(buf, 0, len); os.flush(); } } catch (Exception e) { Log.d("writelog", "read logcat process failed. message: " + e.getMessage()); } finally { if (null != os) { try { os.close(); os = null; } catch (IOException e) { // Do nothing } } } } }.start(); } catch (Exception e) { Log.d("writelog", "open logcat process failed. message: " + e.getMessage()); } 可以到sdcard下面获取日志文件,大功告成。 二、关于READ_LOGS权限 由于日志往往包含应用的隐藏信息,为了防止恶意程序监控某些其他应用。从android4.1(SDK > 16)开始,普通应用只能读取应用自身进程的信息,也不能读取子进程日志信息。只有系统应用(进程)才能读取所有进程的logcat信息。 要读取所有进程的logcat信息,必须有 1. 系统签名 2. 或者sharedUserId system
转载请注明原文地址: https://www.6miu.com/read-52948.html

最新回复(0)