Android性能分析工具简介

简介:

在Android项目开发工程中,功能开发只是其中的一部分,更多的时候是优化,优化除了个人的良好习惯,往往还需要借助第三方工具。本文罗列Android优化过程中的一些常用工具借助这些工具,可以很方便的帮助我们进行性能的分析,进而进行产品的优化。Android应用优化主要从页面优化,内存优化,电量优化,GPU优化和网络优化等方面着手,涉及的知识也比较广泛,下面是优化的一些常见工具。

这里写图片描述

Android官方工具

Android官方提供了很多的优化工具,很多工具已经自动集成到Android Studio的集成开发环境中,下面就这些工具做一个简单的介绍。

StrictMode

"严格模式", 主要用来限制应用做一些不符合性能规范的事情. 一般用来检测主线程中的耗时操作和阻塞。开启StrictMode后, 如果线程中做一些诸如读写文件, 网络访问等操作, 将会在Log console输出一些警告, 警告信息包含Stack Trace来显示哪个地方出了问题。

使用及更多的介绍可以访问:
https://developer.android.com/reference/android/os/StrictMode.html

使用也可以访问下面的地址:
http://www.androidchina.net/4358.html

Systrace

Systrace是一个收集和检测时间信息的工具, 它能显示CPU和时间被消耗在哪儿了, 每个进程和线程CPU时间片所做的事情,而且会指示哪个地方出了问题, 以及给出Fix建议。但是在Android Studio 3.0和更高版本中Systrace已经被弃用,将会提供类似的新的工具。

如果要启动独立的设备监视器应用程序,请在android-sdk/tools/目录的中找到monitor,点击即可启动。相关的内容可以查看下面的文章:
https://blog.csdn.net/zhuxiaoping54532/article/details/77337054
当然也可以参考官方的介绍:
https://developer.android.com/studio/profile/systrace.html
https://developer.android.com/studio/profile/systrace-walkthru.html
https://developer.android.com/studio/profile/systrace-commandline.html?hl=fy
这里写图片描述

Hierarchy Viewer

Hierarchy Viewer提供了一个可视化的界面来观测布局的层级, 让我们可以优化布局层级, 删除多余的不必要的View层级, 提升布局速度。
这里写图片描述
这里写图片描述
在使用Hierarchy Viewer进行布局层次分析时,有必要说明下的是:
上图红框标出的三个点是关键分析数据. 左起依次代表View的Measure, Layout和Draw的性能. 另外颜色表示该View的该项时间指数, 分为:

  • 绿色, 表示该View的此项性能比该View Tree中超过50%的View都要快.
  • 黄色, 表示该View的此项性能比该View Tree中超过50%的View都要慢.
  • 红色, 表示该View的此项性能是View Tree中最慢的.
    官方文档介绍:

https://developer.android.com/studio/profile/hierarchy-viewer.html
https://developer.android.com/studio/profile/hierarchy-viewer-walkthru.html
https://developer.android.com/studio/profile/hierarchy-viewer-setup.html
https://developer.android.com/studio/profile/optimize-ui.html#HierarchyViewer
需要注意的是,Hierarchy Viewer需要Root的机器才可以执行,可以使用第三方的开源的ViewServer来协助我们在未Root的机器上使用Hierarchy Viewer分析。
当然,也可以使用Layout Inspector来替换Hierarchy Viewer,相关的使用介绍可以访问下面的文章:
https://blog.csdn.net/ziwang_/article/details/66970591

TraceView

TraceView是一个图形化的工具,用来展示和分析方法的执行时间。TraceView的使用可以参考下面的文章:

https://blog.csdn.net/u011240877/article/details/54347396
这里写图片描述

Memory Monitor

内存使用检测器, 可以实时检测当前Application的内存使用和释放等信息, 并以图形化界面展示。可以结合heap viewer, allocation tracker来做内存分析,当然也可以导出hprof文件结合第三方的MAT工具分析泄露点。

Android Profiler

Android Profiler是3.0版本的一个新功能,对之前的工具做了优化和总结,主要由cpu、内存和网络三大块组成。

CPU Profiler

CPU分析器可帮助您实时检查应用程序的CPU使用情况和线程活动,并记录方法跟踪,以便您可以优化和调试应用程序的代码。

打开步骤:

  • 点击 View > Tool Windows > Android Profiler
    (还可以点击工具栏的这里写图片描述);
  • 从Android Profiler工具栏中选择要配置的设备和应用程序进程(如果您已通过USB连接设备但未看到它,请确保已启用USB调试);
  • 单击CPU时间轴中的任意位置打开CPU Profiler。

这里写图片描述

其中,

  • ① Selected time frame:
    在跟踪窗格中检查的记录时间框架的部分。当您第一次记录一个方法跟踪时,CPU分析器将自动选择您在CPU时间线中记录的整个长度。如果要检查仅记录的时间帧的一部分的方法跟踪数据,您可以单击并拖动高亮显示区域的边缘来修改它的长度。
  • ②Timestamp:
    表示记录方法跟踪的开始和结束时间(相对于profiler开始从设备收集CPU使用信息时)。你可以点击时间戳来自动选择整个记录作为你选定的时间框架——如果你有多个你想要转换的记录,这是非常有用的。
  • ③Trace
    pane:显示您所选择的时间框架和线程的方法跟踪数据。仅当您记录至少一个方法跟踪后,此窗格才会显示。在此窗格中,您可以选择如何查看每个堆栈跟踪(使用跟踪选项卡)以及如何测量执行时间(使用时间参考下拉菜单)。
  • ④: 选择显示为Top Down tree, Bottom Up tree, Call Chart, or Flame
    Chart这些类型的图。您可以在下面的部分中了解有关每个跟踪窗格选项卡的更多信息。

从下拉菜单中选择以下选项之一,以确定如何测量每个方法调用的时序信息:

  • Wall clock time: 表示实际经过时间;
  • Thread
    time:计时信息表示实际的消耗时间减去不消耗CPU资源的那段时间的任何部分。对于任何给定的方法,它的线程时间总是小于或等于它的时钟时间。使用线程时间让您更好地了解给定方法所消耗的线程实际CPU使用量。

关于这部分内容的详细使用方法,可以参考下面的教程:
https://blog.csdn.net/niubitianping/article/details/72617864

第三方工具

除了官方提供的一些工具外,还有一些开源的检测手段。

Battery Historian

Google出品, 通过Android系统的bugreport文件来做电量使用分析的工具。项目地址:
https://github.com/google/battery-historian

Square

Square出品了多个Android经典的开源方案,在优化代码方面,Square也提供了诸多的优化工具。如内存泄漏方面:
https://github.com/square/leakcanary

目录
相关文章
|
18天前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
61 1
|
18天前
|
缓存 监控 Linux
掌握Linux性能分析:深入探索perf工具
【10月更文挑战第26天】
22 1
|
1月前
|
Web App开发 监控 JavaScript
一些常用的 Vue 性能分析工具
【10月更文挑战第2天】
75 1
|
2月前
|
SQL 缓存 关系型数据库
MySQL高级篇——性能分析工具
MySQL的慢查询日志,用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long-query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为 10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。它的主要作用是,帮助我们发现那些执行时间特别长的 SOL 查询,并且有针对性地进行优化,从而提高系统的整体效率。当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。
MySQL高级篇——性能分析工具
|
2月前
|
监控 IDE Java
【Java性能调优新工具】JDK 22性能分析器:深度剖析,优化无死角!
【9月更文挑战第9天】JDK 22中的性能分析器为Java应用的性能调优提供了强大的支持。通过深度集成、全面监控、精细化分析和灵活报告生成等核心优势,性能分析器帮助开发者实现了对应用性能的全面掌控和深度优化。在未来的Java开发过程中,我们期待性能分析器能够继续发挥重要作用,为Java应用的性能提升贡献更多力量。
|
6月前
|
监控 Java 开发者
Java一分钟之-Java性能分析与调优:JProfiler, VisualVM等工具
【5月更文挑战第21天】本文介绍了Java性能优化的两个利器——JProfiler和VisualVM。JProfiler通过CPU Profiler、内存分析器和线程视图帮助解决过度CPU使用、内存泄漏和线程阻塞问题;VisualVM则聚焦于GC行为调整和类加载优化,以减少内存压力和提高应用性能。使用这些工具进行定期性能检查,是提升Java应用效率的关键。
176 0
|
3月前
|
存储 缓存 监控
Linux性能分析工具-perf并生成火焰图
Linux性能分析工具-perf并生成火焰图
|
3月前
|
编解码 Android开发
【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手
本文介绍了Android Studio中使用ConstraintLayout布局的方法,通过创建布局文件、设置控件约束等步骤,快速上手UI设计,并提供了一个TV Launcher界面布局的绘制示例。
56 1
|
3月前
|
SQL 存储 监控
|
3月前
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
83 0