app测试的时候,经常会遇到异常,如果开发没有异常保存,就得通过adb命令来查看日志信息
1)实时打印日志
可以通过ddms工具来查看
实时日志可以通过命令查看:adb logcat,打印的是所有应用里面的信息
代码中如何写日志的(了解)
Android提供了自己的log输出api-位于android.util.Log这个类中,这个类比较常用的打印日志方法有5个,这5个 方法会把日志打印到LogCat中
Log.v(tag.message)://verbose模式,打印最详细的日志明细;
Log.d(tag.message)://debug的级别日志;
Log.i(tag.message)://info级别的日志;
Log.w(tag.message)://warn级别的日志;
Log.e(tag.message)://error级别的日志;
tag用例标记log消息的源头的,而message是这条log的内容,从日志的输出数量来算,error、warn、info、debug、verbose数量从少到多
2)adb logcat ActivityManager:I *:s(过滤ActivityManager中的info日志)
3)adb logcat | findstr ActivityManager(过滤ActivityManager日志)
"-b":加载一个日志缓冲区,默认是main,下面详解:
4)adb logcat -b main -v time>app.log 打印应用程序的log
5)adb logcat -v time>app.log 默认main(可以查看日志的输出时间)
6)adb logcat -b radio -v time>radio.log 打印射频相关的log,广播电话相关的日志信息
7)adb logcat -b events -v time>event.log 打印系统事件的日志,比如触屏事件
bugreport(命令adb bugreport>bugreport.log)
bugreport 记录Android启动过程的log,以及启动后的系统状态、包括进程列表、内存信息等等到,里面包含有dmesg、dumpstate和dumpsys
1)dmesg(命令 adb shell dmesg > ldmesg_kemellog)打印内核启动过程的所有信息,凡是跟kemel相关的,比如driver出了问题(相机、蓝牙、usb、启动等等)
2)dumpstate是系统状态信息(命令adb shell dumpstate > ldumpstate_kernel.log),里面比较全,包括手机当前的内存信息、CPU信息、logcat缓存,kernel缓存等等。
3)dumpsys这个是关于系统所有进程Process的内容都在这个里面
具体命令
adb shell dumpsys cpuinfo system 查看system这个process的内存信息
dumpsys [options]
ANR定义:在Android 上,如果你应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”
所以一个流畅的合理应用程序中不能出现anr,而用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。
ANR日志路径:/data/anr/trace.txt
出现ANR,找到ANR中的报错日志信息提交给开发。
注意:
如果没有这个异常就不会产生这个日志文件
查看包名的方法有很多种
1)/data/data (通过adb shell 命令进入手机查看)
3)ActivityManager:I *: s (adb logcat ActivityManager:I *: s)
4)adb shell pm list packages findstr camera
5)aapt dump badging
手机ROOT通常是针对Android系统对于手机而言,它使得用户可以获取Android 操作系统的超级用户权限。
root通常用于帮助用户越过手机制造商的限制,使用户可以卸载手机制造商、运营商、第三方渠道商预装在手机中某些应用,以及运行一些需要超级用户权限的应用程序。所以,用root进行不当的操作是相当于危险的,轻微的可以死机,严重的不能开机。所以Unix、Linux及Android中,除非确实需要,一般情况下都不推荐使用root。
Android 系统的root与ios系统的越狱类似。