美文网首页
《Android编程权威指南》之Android应用的调试篇

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

作者: 夜远曦白 | 来源:发表于2021-08-24 11:02 被阅读0次

    处理应用的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上面有个挺多好用日志输出工具。

      随意推荐两个:

      loggerhttps://github.com/orhanobut/logger

      LogCathttps://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

    相关文章

      网友评论

          本文标题:《Android编程权威指南》之Android应用的调试篇

          本文链接:https://www.haomeiwen.com/subject/bryliltx.html