Android Method Trace 生成与解析

date
slug
android-method-trace-create-and-parse
status
Published
tags
Android
ddmlib
summary
Android Studio 3.0 中的 Profiler 工具相比 2.0 版本有了很大的进步,这几天翻了下相关的源码记录如下. 生成 trace 文件官方的文档里对于生成 trace 文件主要有两种
type
Post
Android Studio 3.0 中的 Profiler 工具相比 2.0 版本有了很大的进步,这几天翻了下相关的源码记录如下.

生成 trace 文件

官方的文档里对于生成 trace 文件主要有两种

code

第一种是在代码中添加
生成的trace文件

ddmlib

第二种是使用 ddms / Android Monitor 手动生成, ddms 的核心是一个叫 ddmlib 的库, 在 Android SDK 里 tools/lib/ddmlib-*.jar 可以找到.
网上关于 ddmlib 的文章不多, 可以参考一下. 隐藏Boss——ddmlib使用入门 和 通过 ddmlib 使用 adb,构建框架基础库

命令行工具

翻着源码掉了 N 次坑写了一个命令行调用的 jar AndroidMethodTraceRunner
命令行中调用 $ java -jar mtr.jar -p com.your.package -o output.trace -t 10 可以 trace 10 秒钟, 运行需要 java8.
主要的两个坑:
AndroidDebugBridge.init(true); false 的话不能获取到 client
必须关闭 ddms 和 Studio 的 monitor / profiler, 否则会抢占 client 造成连接失败.
对于 ddmlib 有几个大体的概念
bridge - adb
device - 设备
client - 应用
主要代码如下:

Android Studio

但是 Android Studio 3.0 中并没有使用 ddmlib
大体调用栈如下:

解析/读取 trace

GUI

ddms 或者 Android Studio 2.0 / Intellij IDEA 可以直接打开 trace 文件, 但是都没有 Android Studio 3.0 的 profiler 直观好用.
android-studio-3.0-profile)
notion image
 
notion image
monitor
notion image

© likaci 2013 - 2024