该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
举例说明如何使用logcat来查找程序异常的原因(仅举一例,logcat的其他用法和使用范围请各学员自行探索学习)
我打算去掉“设置->关于->法律信息”一项。于是我反编译Settings.apk后,修改Settings\res\xml\device_info_settings.xml,删除了以下部分:
复制代码修改完成后替换系统中的原文件,开始测试。发现一点击关于就提示“应用程序 设置(进程:com.android.settings)意外停止,请重试。”,强制关闭出现了。
那么,肯定是我修改后就出现了问题啊,可是问题在哪里呢。这个时候就可以选择用logcat来帮忙了。
打开cmd,输入:
adb logcat复制代码PS:这里如果谁还来问:我这里提示“'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件”,那么,请自行撞墙去。adb的安装不在本文探讨范围!
然后不管它的输出了,重新打开设置,手指停在“关于”的位置,先不点,等到logcat输出较为稳定时再动
logcat输出较为稳定,此时手指点击“关于”,不出意料,仍然FC,看着CMD中logcat的输出多了许多,马上Crtl+C停下logcat的输出
然后看到输出的最后那部分多出来的东西,如下部分:
D/dalvikvm( 366): GC_EXPLICIT freed 199K, 49% free 3197K/6215K, external 2056K/2559K, paused 69ms
I/ActivityManager( 210): Starting: Intent { act=android.intent.action.MAIN cmp=com.android.settings/.DeviceInfoSettings } from pid 716
D/AndroidRuntime( 716): Shutting down VMW/dalvikvm( 716): threadid=1: thread exiting with uncaught exception (group=0x40018560)
E/AndroidRuntime( 716): FATAL EXCEPTION: main
E/AndroidRuntime( 716): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.DeviceInfoSettings}: java.lang.NullPointerException
E/AndroidRuntime( 716): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768)
E/AndroidRuntime( 716): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
E/AndroidRuntime( 716): at android.app.ActivityThread.access$1500(ActivityThread.java:123)
E/AndroidRuntime( 716): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)