《Android编程权威指南》之Android应用的调试篇

2021-09-22 10:26:20 浏览数 (1)

处理应用的bug,这是每个程序员的基本功,实际项目中天天都有各式各样的bug,因此学会如何使用Logcat、Android Lint以及Android Studio内置的调试器就非常有必要啦!

异常与栈跟踪

写代码嘛,一个不注意就把程序写奔啦,不用担心,展开Logcat工具窗口。上下滑动LogCat窗口滚动条,就能看到整片红色的异常或错误信息。若看不到,可尝试选择LogCat的No Filters过滤器项。还有信息太多的情况下,可以调整Log Level为Error,让系统只输出严重问题日志。或者直接搜索 “FATAL EXCEPTION”,直接定位到崩溃异常。

如图,模拟一个崩溃日志:

异常日志

注意,Android应用编译,Kotlin代码会被编译为和Java代码同样的低级字节码,所以即使是用kotlin来编写代码,会看到java.lang异常也不用觉得太奇怪。

上述图片显示的异常,我们可以从异常语句直接跳转到源代码出错的对应行上,找出奔溃原因,加以修正。

当然这是比较简单的异常,真正的复杂项目中,碰到运行异常时,记得在LogCat中寻找最后一个异常及其栈跟踪的第一行(对应着源代码),这也是查找解决方案的最佳起点。

诊断应用异常

由于有的错误并不会产生崩溃,却得不到我们想要的结果,此时,我们就需要打印日志跟踪或者是断点调试了。

  • 记录栈跟踪日志 打印日志也有点技巧,我们在调试一个功能异常的时候,TAG可设置成一种,方便我们过滤日志信息从而分析日志。 一般项目中都会自行封装一个专门打印Log日志的类,用于控制整个项目的日志输出,github上面有个挺多好用日志输出工具。 随意推荐两个: logger :https://github.com/orhanobut/logger LogCat:https://github.com/liangjingkanji/LogCat
  • 设置断点 打断点也是程序员调试程序的常用方法,断点会在断点设置行的前一行代码出停止运行,然后我们可以逐行检查代码。

设置断点 然后调试运行项目:

debug 然后从Variables可以看到各种变量信息,当然也可以从旁边的箭头一步步执行代码,分析代码,上边有个小计算机图标,是用来做一些计算调试的,它可以改变一些变量看一些结果。

demo debug工具控制按钮:

debug工具控制按钮

「推荐」一篇专门讲了Android Studio一些各种小技巧的文章,当然包含了调试技巧。

地址:https://jaeger.itscoder.com/android/2016/02/14/android-studio-tips.html

小总结:

打印Log日志的优点是,在同一日志记录中可以看到多处的栈跟踪信息;缺点是,必须学习如何添加日志记录函数,重新编译、运行应用并跟踪排查应用问题。

相对而言,代码调试的方法更为方便,应用以调试模式运行后,可在应用运行的同时,在不同的地方设置断点,寻找解决问题的线索。

当然不同场景下,打印日志会更加清晰、方便寻找解决问题线索,比如说一个循环中。

Android特有的调试工具

  • 使用Android Lint Android应用代码的静态分析器(static analyzer)。 Analyze → Inspect Code...菜单项手动运行Lint。

lint 选择Whole project,然后Android Studio会立即运行Lint和其他一些静态分析器开始分析代码。检查完毕,所有的潜在问题会按类别列出。

Lint警告信息 总的来说,Lint工具都提供了详细的信息,并给出了解决建议,我们可以选择解决,或者是忽略它。真正大项目还是看情况来吧,自己分析一下,是不是有必要解决。

  • R类的问题 资源编译错误有时会一直存在或莫名其妙地出现时候,可尝试的操作:
    • 重新检查资源文件中XML文件的有效性
    • 清理项目(Build -> Clean Project)
    • 使用Gradle同步项目(Sync Project with Gradle Files)
    • 运行Android Lint(或许会有意想不到的发现)

实在还没解决的问题,就访问Stack Overfow网站或本书论坛求助!^_^

挑战练习:探索布局检查器

Tools → Layout Inspector

可用交互的方式检查布局文件,研究它是如何在屏幕上渲染显示的。

layout inspector

还有有用的,分析布局,还有个调试布局不错的工具,在sdk->tools->bin->uiautomatorviewer,打开这个东西,也可以分析布局,结合使用。

挑战练习:探索Android性能分析器

Android Studio 3.0 及更高版本中的 Android Profiler 取代了 Android Monitor 工具。Android Profiler 工具可提供实时数据,帮助您了解应用的 CPU、内存、网络和电池资源使用情况。

Profiler

具体参考:https://developer.android.com/studio/profile/android-profiler

0 人点赞