Battery Historian电量分析工具安装运行详解

2023-11-08 23:10

本文主要是介绍Battery Historian电量分析工具安装运行详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • Battery Historian
    • Docker安装(Windows)
      • 虚拟功能
      • Android模拟器冲突
    • 源码编译安装
      • Windows环境
      • Ubuntu环境
        • GO安装
        • GOPATH,GOBIN
      • 下载配置问题
      • working directory is not part of a module
      • 单步执行(执行setup.go)
        • Ubuntu下执行setup.go遇到无法保存库问题
      • closure-library错误
    • 运行
      • 获取bugreport.txt
      • 渲染分析
    • 在线分析

Battery Historian

Battery Historian是开源的工具,代码链接地址。

工具可以用于分析Android(5.0及以上)设备——不插电前提下——运行过程中电池相关的信息和事件。工具可使应用开发者基于移平移和缩放功能的时间线可视化系统和应用级别的事件,查看自从上次设备满电后各种聚合统计信息,以及选择一个应用程序分析影响电池的指标。

安装方式一般两种方式,Docker和源码编译方式。
主要参考battery-historian github的描述开始进行安装。

Docker安装(Windows)

第一种方式使用Docker安装,首先是安装Docker,按照自己的开发环境,操作系统及需要的版本选择对应的Docker安装。

运行Battery Historian镜像。

docker -- run -p <port>:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999

其中参数 自行选择设置。

对于Linux或者Mac OS X来说到这里就安装运行结束了,可以通过地址 http://localhost: 访问Historian。

对于Windows来说,要运行其Historian镜像:

  • 首先还需要开启Windows虚拟功能。(按Android官网说法,可以运行Android模拟器就说明系统已经开启了虚拟功能。)
  • 一旦启动docker,docker会显示机器正在使用IP地址。例如,机器使用的IP地址是 123.456.78.90 ,那么可以通过地址 http://123.456.78.90: 来访问Historian。

虚拟功能

windows开启虚拟功能

控制面板

程序

虚拟功能

进入到windows控制面板 程序,选择程序和功能 菜单下启用或关闭windows功能项,在打开的Wwindows功能窗口中勾选Hyper-V功能,启用虚拟功能。(该步骤也可以是在Docker安装时进行勾选,由安装程序帮助完成)

需要fq

命令

docker -- run -p <port>:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999

需要PC是在可访问外网的前提下,需要fq。


Android模拟器冲突

在安装Docker后,想运行Battery Historian镜像,开启Hyper-V(虚拟功能),会带来问题。

问题

  • 若windows系统中安装有Android模拟器,例如,逍遥游,夜神等第三方模拟器,会提示系统开启了虚拟功能,需要关闭。这里测试下来夜神导致了PC蓝屏。
  • windows系统下安装Docker镜像较大,默认会直接安装到系统启动盘内(盘剩余空间越来越小),且运行需要docker命令需要fq,一次我放弃了使用docker来进行安装的方式。

源码编译安装

源码编译方式,除了Windows,Ubuntu中环境准备阶段的方式有所不同外,其他的下载,编译,及遇到的问题均一致。

首先需要确保系统中有至少是Go 1.8.1的环境。

Windows环境

  • 若还没有Go环境,需要安装。到 http://golang.org/doc/install 去进行下载安装;
  • 依据用法指南创建工作空间,https://golang.org/doc/code.html#Organization
  • 配置环境变量GOBIN,GOPATH;

还需要安装Git,Python(2.7版本,不是3.x版本),JDK环境。

在各环境准备好后下载Battery Historian源码及相关依赖:

go get -d -u github.com/google/battery-historian/...

Ubuntu环境

GO安装
  1. 安装go环境。

    $ sudo apt-get remove golang-go
    $ sudo apt-get remove --auto-remove golang-go
    

    卸载命令来自Ubuntu go 语言卸载更新,或尝试

    $ sudo apt-get remove golang
    

    然后安装新版本的go安装包tar.ga,将其加压缩到目录 /usr/local/ 目录下。

  2. 配置环境变量。

    在/etc/profile文件内添加go目录。

    $ sudo vim /etc/profile
    

    在打开的编辑中添加环境变量。

    export GO_HOME=/usr/local/go
    export PATH=$GO_HOME/bin:$PATH
    

    退出编辑器后,执行

    $ source /etc/profile
    

    使环境变量起作用,可以是使用命令

    $ go version
    

    查看输出结果

    go version go1.15 linux/amd64
    
GOPATH,GOBIN

通过命令

$ go env

可以查看到GOPATH默认值是 $HOME/go 值。GOBIN变量的值为""。

$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/nn/.cache/go-build"
GOENV="/home/nn/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/nn/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/nn/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
...

可以讲GOBIN路径设置为 $GOPATH/bin

$ go env -w GOBIN=/home/nn/go/bin

以下步骤均以Windows为例,Ubuntu下操作步骤雷同。

下载配置问题

命令

go get -d -u github.com/google/battery-historian/...

的执行也需要fq,但凡需要从google官方download库似乎均需要fq操作。

因此需要进行fq操作,可以通过设置goproxy来进行合理的下载go的官方库。

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

这个网址可以直接访问,是一个专门做go模块代理的网站,可以使用。

在设置上述环境变量之后,再执行 go get 命令,可以看到下载进度了。

go get

到这里执行结局后可以看到在下载目录下,设置代理地址后下载完成 是一个pkg目录,在了解GO项目的目录结构后,pkg是存放编译过程中产生的中间文件的目录。且在pkg目录中也尝试了各种命令运行,依然是无法执行通过。

进入到pkg目录下的battery源码目录,执行

$ go run setup.go

执行显示 working directory is not part of a module

working directory is not part of a module

setup.go:30:2: cannot find module providing package github.com/google/battery-historian/bugreportutils: working directory is not part of a module
setup.go:31:2: cannot find module providing package github.com/google/battery-historian/historianutils: working directory is not part of a module

为了解决这个问题,放弃执行

go get -d -u github.com/google/battery-historian/...

的结果,使用单步执行命令的方式。

单步执行(执行setup.go)

在执行命令前,将pkg目录下的github.com目录copy至src目录下,同名文件进行merge即可。
再执行一下命令,进行以来库的下载更新。

go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
go get -u github.com/google/battery-historian

进入到 battery-historian 目录后运行setup.go程序,会发现依然存在 working directory is not part of a module 的错误提示。

  • 返回到github.com/google 目录下;
  • 运行 go mod init 命令;

go mod init

  • 进入battery-historian 目录,再次执行 go run setup.go,就可以看到编译进度;

run setup

这样可以执行js部分的编译,在最后依据提示可以看到执行是失败的。

因此重新执行如下几个命令,如图中所示,具体的操作解析我也么有具体了解,但在执行后再次运行 go run setup.go 命令就通过了。

在运行setup.go过程中可能会在最后发现有提示如下

会发现closure-library库内的js错误。

Ubuntu下执行setup.go遇到无法保存库问题

ubuntu下如果发现执行命令:

$ go run setup.go

时,下载文件无法保存的错误。

Couldn't save Closure zip file: open /home/nn/go/battery-historian/src/github.com/google/battery-historian@v0.0.0-20170519220231-d2356ba4fd5f/third_party/closure-compiler/compiler-20170409.zip: permission denied

这是目录读写权限问题,可以修改battery-historian真个目录的权限。

$ sudo chmod 777  battery-historian/ -R

再次执行setup.go就可以正常下载保存了。

closure-library错误

出现了js编译过程的错误,不影响在浏览器中打开页面——即可以在浏览器中看到运行结果,但无法准确执行上传bugreport后的渲染结果。

因此需要手动替换closure-library库的版本。

结合closure-library github issue内的提问答案,将closure-library替换为tag v20170409版本,将下载的源码zip包文件放置于 src/github.com/google/battery-historian/third_party 目录下,减压缩后重命名后,再次运行setup.go程序,就可以看到正常执行结果。

运行

在上述之后battery historian工具是编译安装好了,接着就是尝试运行。

在命令行中执行命令

go run .\cmd\battery-historian\battery-historian.go

然后在浏览器中输入 http://localhost:9999/ 地址(默认端口号是9999),等待响应即可——不论是错误或是成功,需要等待一会儿。

我这里打开结果是正常的。

运行结果

运行页面

获取bugreport.txt

在Android 7及以上设备上运行命令:

adb bugreport bugreport.zip

在Android 6以及以下设备上运行命令:

adb bugreport > bugreport.txt

bugreport位置

导出的结果在设备文件系统根目录下面的bugreports目录下,需要将其导出到本地PC机。

渲染分析

在浏览器中选择导出的bugreport.zip或bugreport.txt文件,点击submit后,即可查看到渲染结果。

选择bugreport文件

上传进度

渲染效果

接着依据需求,自行分析需要的数据。

在线分析

除了自己进行编译使用外,还可以直接利用在线方式进行渲染查看,操作方式一致。

直接访问:https://bathist.ef.lc/,上传bugreport文件即可。

这篇关于Battery Historian电量分析工具安装运行详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373013

相关文章

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Win安装MySQL8全过程

《Win安装MySQL8全过程》:本文主要介绍Win安装MySQL8全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Win安装mysql81、下载MySQL2、解压文件3、新建文件夹data,用于保存数据库数据文件4、在mysql根目录下新建文件my.ini

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数