目前测速点主要有:
- Application创建耗时
- 页面测速
- 应用冷启动测速
- 页面网络请求耗时监控
具体耗时统计的含义如下图:
测速功能主要是通过编译期字节码插桩来完成的,因此需要引入rabbit
插件:
应用build.gradle
rabbitConfig {
enableSpeedCheck = true //不需要设置,默认是打开的
pageSpeedMonitorPkgs = ['com.susion.rabbit.demo'] // 指定测速范围
}
可以在rabbit
初始化时提供RabbitAppSpeedMonitorConfig对象来对要监控的内容进行配置:
rabbitConfig.monitorConfig.monitorSpeedList = loadMonitorSpeedConfig()
Rabbit.config(rabbitConfig)
这里loadMonitorSpeedConfig()
是从assert
文件夹下读取了配置:
private fun loadMonitorSpeedConfig(): RabbitAppSpeedMonitorConfig {
try {
val jsonStr =
FileUtils.getAssetString(RabbitMonitor.application!!, "rabbit_speed_monitor.json")
if (jsonStr.isEmpty()) return RabbitAppSpeedMonitorConfig()
return Gson().fromJson(jsonStr, RabbitAppSpeedMonitorConfig::class.java)
} catch (e: Exception) {
}
return RabbitAppSpeedMonitorConfig()
}
rabbit_speed_monitor.json
:
{
"home_activity": "MainActivity",
"page_list": [
{
"page": "ForumContainerActivity",
"api": [
"api/xxx1",
"api/xxx2"
]
}
...
]
}
home_activity
:它指定了应用的入口Activity
, 主要和应用冷启动逻辑相关联,如果配置的此项,那么冷启动耗时可以测量到上图的中T6。
page_list
: 用来配置每一个测速页面。当配置的api
中的接口都请求完成后就会触发这个页面的T6点。
当然你也可以从网络动态下发配置,对于这种情况你可能需要使用这个API:
Rabbit.reConfig(configWithSpeedList)
在开始测试前不要忘记打开测速功能
最终生成的测速结果如下图:
页面渲染 & 网络耗时
应用冷启动