android应用调试之如何保存logcat日志到本地
2017-07-11 09:47
691 查看
在开发时候,遇到某些设备没有开启adb服务,一时半会也不知道设备打开adb的隐藏页面,调试的时候就难免抓狂。完整的调试方案只能是把log写到本地,具体有两种调试方法
1. 封装一个utils.log接口,接口实现日志写入到本地文件;
2. 读取系统logcat信息,并写到本地。
第一种方法比较简单就不需要阐述了;
一、实现读取logcat日志
步骤一、在AndroidManifest.xml中添加读取日志的权限
源码如下:
可以到sdcard下面获取日志文件,大功告成。
二、关于READ_LOGS权限
由于日志往往包含应用的隐藏信息,为了防止恶意程序监控某些其他应用。从android4.1(SDK > 16)开始,普通应用只能读取应用自身进程的信息,也不能读取子进程日志信息。只有系统应用(进程)才能读取所有进程的logcat信息。
要读取所有进程的logcat信息,必须有
1. 系统签名
2. 或者sharedUserId system
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
相关文章推荐
- android应用调试之如何保存logcat日志到本地
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- Android Studio IDE的 LogCat如何过滤指定应用的调试信息
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- 【Android应用开发】 Android 崩溃日志 本地存储 与 远程保存
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- 【Android应用开发】 Android 崩溃日志 本地存储 与 远程保存
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- Android Studio IDE的 LogCat如何过滤指定应用的调试信息
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- 在Android 2.3中如何使用native_activity.h编写本地应用
- 如何给Android应用创建本地服务