Battery Historain
是谷歌開發的Android耗電量分析工具
,其開發語言為go語言
。因此,若安裝Battery Historain
,首先需要配置go語言
環境。本以為go語言
與Battery Historain
安裝是一件很簡單的事情,但事實卻是安裝過程舉步維艱
。
這篇文章僅用來記錄Battery Historain
安裝過程中遇到的問題
和解決方法
,為同樣做App耗電量
相關的研究的其他同學提供一個參考。
- 安裝go
- 安裝Battery Historain
- 免安裝方式
一、安裝go
首先安裝與配置go環境。
- 下載安裝go
- 配置go環境
- 驗證go
1.1、下載安裝go
直接到 官方下載go
1.2、配置go環境
go環境變量
建議配置到.bash_profile
文件中。
( 不了解.bash_profile
文件位置的同學,可參考文章:mac環境變量 )
我的mac電腦 .bash_profile
文件中go環境配置如下:
# go
GOROOT=/usr/local/go
export GOROOT
export GOPATH=/Users/xiaxveliang/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN:$GOROOT/bin
相關參數說明:
- GOROOT:go的安裝目錄;
- GOPATH:go的工作路徑;
1.3、驗證go
配置完成環境變量后,驗證一下go的安裝是否正常。
二、安裝Battery Historain
Battery-Historian
為谷歌開發的Android耗電量分析工具
,其GitHub官方地址為:
Battery-Historian
2.1、下載go相關依賴包
下載go相關依賴包,運行以下命令:
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
遇到 錯誤1:
如果網址不被和諧,相關依賴包應該會很快下載下來。
我在運行以上命令時,遇到了如下錯誤:
go get: module github.com/golang/protobuf/proto: Get "https://proxy.golang.org/github.com/golang/protobuf/proto/@v/list": dial tcp 172.217.27.145:443: i/o timeout
解決 錯誤1 :
遇到以上問題后,查了很多資料,網上大多評論為更換為國內的相關代理地址。
// 執行該命令,更換為國內代理地址
go env -w GOPROXY=https://goproxy.cn,direct
2.2、下載 battery-histrizan
go環境下載battery-histrizan
,可執行如下命令:
go get -u github.com/google/battery-histrizan
遇到 錯誤2:
同樣如果相關網址不被和諧,battery-histrizan
下載應該很順利。
我遇到的錯誤如下:
remote: Repository not found.
fatal: repository 'https://github.com/google/battery-histrizan/' not found
解決 錯誤2:
我的解決方案是:
- GitHub下載Battery-Historian:
Battery-Historian的GitHub地址為:
Battery-Historian
https://github.com/google/battery-historian - 將下載后的battery-historian,放到
go的工作目錄
:
具體文件路徑如下:
/Users/xiaxveliang/go/pkg/mod/github.com/google/
2.3、第一次執行 go run setup.go命令:
執行go run setup.go命令:
// 進入battery-historian目錄
cd battery-historian
// 執行setup.go
go run setup.go
遇到 錯誤3:
執行以上命令過程中,又遇到了如下錯誤:
setup.go:30:2: no required module provides package github.com/google/battery-historian/bugreportutils: go.mod file not found in current directory or any parent directory; see 'go help modules'
setup.go:31:2: no required module provides package github.com/google/battery-historian/historianutils: go.mod file not found in current directory or any parent directory; see 'go help modules'
解決 錯誤3:
解決該問題,需要以下兩個步驟:
- go mod init
- go mod verify
2.3.1、go mod init
首先運行如下命令,創建go.mod :
// 進入battery-historian的上一級目錄
cd ..
// go mod init創建go.mod
go mod init example
2.3.2、go mod verify
運行如下兩個命令,查找對應的依賴包:
go mod verify
go mod vendor
2.4、第二次執行 go run setup.go命令:
第二次執行 go run setup.go
時,本以為看到了曙光,卻發現又在下載依賴包,而且完全下載不下來。
遇到 錯誤4:
依賴包下載不下來。
解決 錯誤4:
- 到GitHub下載:
https://github.com/google/closure-library/releases/tag/v20161201
注:這里特意下載2017年前包。 - 下載后,解壓到
go的工作目錄
:
具體文件路徑如下:
/Users/xiaxveliang/go/pkg/mod/github.com/google/battery-historian/third_party
2.5、執行 go run setup.go 成功
第三次執行 go run setup.go命令,終於成功。
// 安裝battery-historian
go run setup.go
2.6、啟動battery-historian.go
運行如下命令,啟動battery-historian.go:
// 啟動battery-historian.go
go run cmd/battery-historian/battery-historian.go
2.7、瀏覽器打開 http://localhost:9999/
打開瀏覽器,並打開以下網址:
http://localhost:9999/
注:這里有一個坑,打開該網址需VPN,否則頁面內容展示不全,或者打不開。
2.8、adb bugreport
最后,導出bugreport文件:
// Android 7.0(包含) 以上設備執行如下命令:
adb bugreport > bugreport.zip
// Android 6.0(包含) 以下設備執行如下命令:
adb bugreport > bugreport.txt
將導出后的bugreport文件上傳到:
http://localhost:9999/
三、免安裝方式
國內以上安裝方式太繁瑣了,主要是各種依賴包都下載不下來(昨天完搞了一下午沒搞定,后來搞到晚上一點Battery Historain才安裝完成,中途幾度想放棄)。
偶然從網上看到一種極其簡的使用方式:
有人搭建了一個Battery Historain
線上環境,相關網址 https://bathist.ef.lc/
將我們導出的bugreport文件
,直接上傳到該網址,便可以完成相關bugreport文件分析
。
四、使用 Battery Historain
如何使用 Battery Historain
,這一點最權威的當然是Google 官方:
使用 Battery Historian 分析耗電情況
https://developer.android.google.cn/topic/performance/power/battery-historian?hl=zh-cn
官方這里介紹的非常詳細,我不再詳細說明。
五、參考:
Mac上安裝Battery Historain遇到的問題:
https://blog.csdn.net/wei_ada/article/details/106127654
Mac配置Android Battery Historain 3.0:
https://www.jianshu.com/p/88a3cb0aee9e
Battery-Historian:
https://github.com/google/battery-historian
Battery Historian 分析電池用量:
https://developer.android.google.cn/topic/performance/power/setup-battery-historian?hl=zh-cn