Android性能优化-电量-BatteryHistorian的安装与启动
最近⾯试了⼏家单位,从Android基础到性能优化再到系统底层源码都有⼀定程度的考察。在回答性能优化的时候总感觉做了⼀些这⽅⾯的⼯作,但却⼜没有办法系统的回答或者经历过的项⽬优化的量化指标还不够极限,还有很多优化空间。本篇记录电量优化中Battery Historian的安装与启动。
Battery Historian是什么
Battery Historian⼯具可以深⼊了解设备随时间的电池消耗情况。在系统级别,该⼯具以HTML表⽰形式显⽰系统⽇志中与电源相关的事件。在特定于应⽤程序的级别,该⼯具提供了各种数据,可帮助您识别耗尽电池的应⽤⾏为。
Battery Historian如何安装
介绍了两种使⽤⽅式,这⾥采⽤的是Docker的⽅式。Docker简单理解为⼀种类似虚拟机的镜像,发布的应⽤以及应⽤所需要的软件环境都统⼀标准打包好再进⾏发布。⽐虚拟机开销⼩、部署快速、Docker容器之间互不⼲扰。
1.Docker的安装
Docker的提供Mac和Win 10的安装包下载。这⾥采⽤Mac版的安装包,整个安装过程和⼀般软件安装⽆异。
安装完成后启动,⾸次启动会输⼊电脑登录密码。
Docker的常⽤命令
查看docker的版本 docker --version
Docker version 18.03.1-ce, build 9ee9f40
查看docker详细信息,包含当前运⾏的镜像 docker info
Containers: 2
Running: 0
Paused: 0
android最新版Stopped: 2
Images: 1
Server Version: 18.03.1-ce
...
安装Docker镜像 docker run hello-world 如果本地不到镜像就会从远处仓储进⾏拉取,然后启动镜像的⼀个容器。
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef2718514bcec35d
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the"hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
hub.docker/
For more examples and ideas, visit:
docs.docker/engine/userguide/
查看当前所有容器 docker ps -all
CONTAINER ID        IMAGE                                                    COMMAND                  CREATED            STATUS                      PORTS
212de7bfb81b        hello-world"/hello"5 minutes ago      Exited (0) 5 minutes ago                            kind_ramanujan 查看当前所有镜像 docker images
REPOSITORY                                                TAG                IMAGE ID            CREATED            SIZE
hello-world                                              latest              e38bc07ac18e        2 months ago        1.85kB
删除镜像 docker rmi <IMAGE ID> 删除镜像的前提是先把镜像关联的container删除 docker rm <CONTAINER ID>,相当于说容器是镜像的⼀
个状态副本(运⾏态、停⽌态)。
2.阿⾥云镜像进⾏拉取
docker的常⽤命令可以查看官⽹进⾏详细学习,这⾥回到Battery Histrian的安装。已经有了docker安装Battery Histrian就⽐较简单了,
根据Github官⽹给出的命令进⾏拉取
这⾥需要把<port>替换⼀个端⼝号,也需要把 -- 去掉(不知道github上为什么会这样给出),那最后的命令是:docker run -p 9000:9999
gcr.io/android-battery-historian/stable:3.0 --port 9999
Unable to find image 'gcr.io/android-battery-historian/stable:3.0' locally
docker: Error response from daemon: Get gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while
See 'docker run --help'.
最新版是stable-3.0,执⾏的命令是:docker run -p 9000:9999 registry-hangzhou.aliyuncs/xyz10/android-battery-historian:stable-3.0
Unable to find image 'registry-hangzhou.aliyuncs/xyz10/android-battery-historian:stable-3.0' locally
stable-3.0: Pulling from xyz10/android-battery-historian
4edc955e886b: Downloading [===>                                              ]  2.814MB/46.77MB
b38b3ce2f236: Download complete
23eada996014: Download complete
230e6aa21788: Download complete
1512449f61db: Download complete
d3c38f0faedf: Downloading [>                                                  ]  524.6kB/286.2MB
16c3ffb28dcd: Downloading [=========>                                        ]  327.1kB/1.711MB
d9f297fb0fb4: Waiting
c9b753bf79ea: Waiting
fb96998348cf: Waiting
7000301bd4e4: Waiting
69b7039b6413: Waiting
dea3253a15d1: Pulling fs layer
等待下载完成即可,使⽤docker images查看是否已经存在镜像。以及使⽤docker ps -a 查看是否启动
CONTAINER ID        IMAGE                                                                          COMMAND                  CREATED            STATUS                        PORT
aaf7423e1315        registry-hangzhou.aliyuncs/xyz10/android-battery-historian:stable-3.0"battery-historian"15 minutes ago      Up 15 minutes 212de7bfb81b        hello-world"/hello"                About an hour ago  Exited (0) About an hour ago
Battery Historian如何启动
获取⼿机的BugReport⽂件然后上传进⾏分析
1.详细记录唤醒锁信息adb shell dumpsys batterystats --enable full-wake-history
Enabled: full-wake-history
2.重置⼿机电池消耗信息adb shell dumpsys batterystats --reset
Battery stats reset.
3.启动APP进⾏⼀些测试案例
4.导出bugreport⽂件
在Android 7.0以及之后都采⽤ adb bugreport bugreport.zip
在Android 7.0之前采⽤ adb bugreport >
Bugreport is in progress and it could take minutes to complete.
Please be patient and do not cancel or disconnect your device until it completes.
/data/user_de/0/com.android.shell/files/bugreports/bugreport-HUAWEINXT-TL00-2018-07-05-10-09-14.zip: 1 file pulled. 27.5 MB/s (1972352bytes
经过测试如果使⽤adb 也可以在7.0以上使⽤,这个时候会⽣成⼀个.zip⽂件和⼀个.txt⽂件。txt⽂件仅仅是记录
了.zip⽂件的⽂件写⼊进度。
5.上传bugreport⽂件
点击Browse,选择bugreport.zip⽂件然后点击Submit即可。
6.最终呈现HTML结果页
截图是使⽤华为Mate 8,Android 7.0,EMUI 5.1。(Nexus 6,三星C5,锤⼦坚果Pro均测试可以导出并且⽣成结果页)
7.分析参数性能指标
这个部分还没深⼊。本篇就先记录安装与启动。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。