利用adb shell 命令来查看启动动画

本文介绍如何使用 ADB shell 命令控制 Android 设备上的启动动画播放与停止。通过执行特定命令,如 setpropctl.startbootanim 和 setpropctl.stop bootanim,用户可以灵活地管理启动过程中的视觉体验。
AI助手已提取文章相关产品:

登录adb shell 之后,可以通过输入命令的方式来向系统发送一些msg,

比如可以设置系统的属性,系统的属性是由全局的共享的匿名内存来保存的,

例如

      adb shell

      su

      setprop ctl.start bootanim  就可以用来播放启动动画了

      setprop ctl.stop  bootanim  就可以用来停止播放启动动画

由于在init.rc 中设置了oneshot 的属性,所以在播放动画结束后,不会被重启,哈哈,大家可以玩一玩

 

您可能感兴趣的与本文相关内容

<think>我们正在讨论的是`adbshelldumpsysgfxinfo`命令。根据引用内容,这个命令主要用于测试Android应用的UI性能,特别是流畅度(如FPS和丢帧率)。以下是对该命令的详细解释:###命令作用`adbshelldumpsysgfxinfo`命令用于**收集和分析应用渲染性能数据**,主要关注以下方面:1.**帧渲染时间**:每帧在UI线程、渲染线程等的耗时,用于判断是否超过16.67ms(60FPS)或8.33ms(120FPS)的帧期限。2.**卡顿分析**:识别丢帧(Jank)情况,即渲染时间超过帧期限的帧。3.**性能瓶颈定位**:通过分析各阶段的耗时(如处理输入、动画、测量布局、绘制等),定位导致卡顿的原因。###使用方法1.**开启GPU渲染模式分析**(在Android设备上):-进入“设置”>“开发者选项”>“监控”>“GPU渲染模式分析”>选择“在adbshelldumpsysgfxinfo中”。-若未开启,命令可能无法输出完整的帧数据[^1]。2.**执行命令**:```bashadbshelldumpsysgfxinfo<package_name>```其中`<package_name>`为目标应用的包名(如`com.android.settings`)。3.**解读输出**:-**Totalframesrendered**:总渲染帧数。-**Jankyframes**:卡顿帧数(渲染超时的帧)及其占比。-**HISTOGRAM**:帧耗时分布直方图,显示不同耗时区间的帧数(例如`5ms=78`表示耗时0-5ms的帧有78个)[^3]。-**Per-phasestats**(若输出包含):详细分解每帧各阶段的耗时(如`Draw`、`Prepare`、`Process`等)。###数据分析示例引用[3]的输出示例:```Graphicsinfoforpid31148[com.android.settings]:Totalframesrendered:105Jankyframes:2(1.90%)NumberMissedVsync:0NumberHighinputlatency:0NumberSlowUIthread:2NumberSlowbitmapuploads:0NumberSlowissuedrawcommands:1HISTOGRAM:5ms=786ms=167ms=4...```-**关键指标**:-卡顿率:1.9%(2/105)。-卡顿原因:2帧因UI线程慢,1帧因绘制慢。-帧耗时分布:大部分帧(78帧)在0-5ms内完成,性能良好。###进阶用法-**累积数据**:添加`framestats`参数可获取更详细的逐帧数据(Android6.0+):```bashadbshelldumpsysgfxinfo<package_name>framestats```-**自动化测试**:结合脚本定期执行命令并解析结果,监控应用流畅度。---###💡注意事项-**数据来源限制**:仅统计自上次重置后的数据(通常为应用启动后或手动重置后)。-**多窗口模式**:Android7.0+支持多窗口,需确保测试时应用处于前台焦点状态。-**版本差异**:输出格式可能随Android版本变化(如直方图统计在旧版本中可能以`Profile`形式呈现)。---§§相关问题§§1.如何通过`gfxinfo`的直方图数据计算平均FPS?2.`dumpsysgfxinfo`与`systrace`在性能分析上的互补性是什么?3.Android10引入的“帧生命周期”分解具体包含哪些阶段?4.如何重置`gfxinfo`的统计计数器?5.为什么`gfxinfo`在部分设备上无法输出帧耗时数据?[^1]</think>### `adb shell dumpsys gfxinfo` 命令详解 #### **命令作用** 该命令用于**分析 Android 应用的 UI 渲染性能**,通过测量帧渲染时间、识别卡顿帧(Jank)和定位性能瓶颈,帮助开发者优化应用流畅度[^1][^3]。核心功能包括: 1. **帧率分析** - 计算 **FPS(每秒帧数)** 和 **丢帧率**(Janky frames) - 判断是否达到 60FPS 标准(每帧耗时 ≤16.67ms) 2. **卡顿溯源** - 识别导致卡顿的具体原因: - `Missed Vsync`:垂直同步失败 - `Slow UI thread`:UI 线程阻塞 - `Slow bitmap uploads`:位图加载延迟 - `Slow issue draw commands`:绘制指令执行缓慢[^3] 3. **内存消耗监控** 统计纹理缓存(TextureCache)、路径缓存(PathCache)等 GPU 资源使用量(单位:MB/字节)[^2] --- #### **使用方法** ##### 步骤 1:开启调试模式 在手机端启用 **GPU 呈现模式分析**: `设置 → 开发者选项 → GPU 渲染模式分析 → 选择 "在 adb shell dumpsys gfxinfo 中"` > 📌 未开启将无法获取帧耗时数据[^1] ##### 步骤 2:执行命令 ```bash adb shell dumpsys gfxinfo <package_name> # 示例:测试系统设置应用 adb shell dumpsys gfxinfo com.android.settings ``` ##### 步骤 3:解读关键数据 命令输出包含以下核心信息(以引用[3]为例): ```plaintext Graphics info for pid 31148 [com.android.settings]: Total frames rendered: 105 # 总渲染帧数 Janky frames: 2 (1.90%) # 卡顿帧比例(耗时 >16ms) Number Missed Vsync: 0 # 垂直同步失败帧数 Number Slow UI thread: 2 # UI 线程超时帧数 Number Slow issue draw commands: 1 # 绘制指令超时帧数 HISTOGRAM: 5ms=78 # 耗时 0-5ms 的帧数 6ms=16 # 耗时 5-6ms 的帧数 7ms=4 # 耗时 6-7ms 的帧数... ``` ##### 步骤 4:性能优化 - **理想直方图**:90% 以上帧集中在 0-8ms 区间 - **红色警报**: - `Slow UI thread` 过高 → 优化主线程逻辑(如减少同步阻塞) - `Slow bitmap uploads` 过高 → 压缩图片资源 --- #### **技术原理** 基于 Android **VSync 机制**: 1. 系统每 16.67ms 发送垂直同步信号(VSync) 2. 应用需在下一个 VSync 前完成帧渲染 3. 超时帧记为 **Janky frame**,导致视觉卡顿 > 💡 详见引用[1]链接的 VSync 机制解析 --- #### **注意事项** 1. **数据重置机制**: 统计数据在应用切换后台时自动清零,需保持应用前台运行测试 2. **Android 版本差异**: - Android 6.0+:支持 `framestats` 参数获取纳秒级精度数据 - Android 9.0+:新增 `reset` 参数重置统计计数器 3. **多窗口模式**: 分屏状态下需指定 `-a` 参数分析当前焦点窗口 --- ### 相关问题 1. 如何通过 `gfxinfo` 的直方图数据计算实际 FPS? 2. `Janky frames` 与用户感知的卡顿有何量化关系? 3. 为什么位图加载(`Slow bitmap uploads`)会导致 UI 线程阻塞? 4. `dumpsys gfxinfo` 与 `systrace` 在性能分析中的互补性是什么? 5. Android 12 的「流畅度指标」如何利用 `gfxinfo` 数据?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值