반응형

Android나 Ios 기반의 앱을 구현하다보면 발생되는 가장 큰 이슈는 단언코 배터리 이슈가 아닐까 한다.


앱만 켜놓은 상태이거나 앱을 구동중인 상태에 배터리가 사용자 눈에 띌 정도로 쭉쭉 떨어지는 배터리 상태를 본다면, 대부분의 사용자는 그 앱을 지워버릴 것이다.


따라서, 앱 개발 과정에 배터리 사용량 체크는 필수가 아닐까 한다.

본 포스팅에서는 모든 OS의 배터리 사용량을 체크하는 방법을 다루면 좋겠지만, Android에 대한 방법에 대해 정리하도록 한다. (Ios나 타이젠 개발자 분들은 조용히 뒤로가기 클릭....)


어떻게 하실껀데요?



Android의 경우, 배터리 사용량 체크에 대해 커스텀 방법을 포함한 여러 방법론이 존재하지만, 본 포스팅에서는 Google에서 제공하는 배터리 사용량 측정 방법에 대해 정리한다.


Android 개발자 사이트에 정의된 내용을 보면, Android에서는 자기들이 제작한 

Battery Historian을 이용하여 배터리 사용량 체크를 해볼것을 제안하고 있다.


기본 측정 방식은 Android 덤프 데이터를 기준으로 분석되며, 분석 언어에는 R엔진을 차용하여 진행한다.



사용하려면....


Battery Historian을 사용하려면 다음의 3가지 방식으로 사용가능한다.


1. 직접 설치

직접 설치의 경우, R엔진 및 기타 등등....의 설치를 직접 수행해야 하기때문에 본 포스팅에서는 다루지 않도록 한다.


2. Docker를 이용한 설치

요즘 나름 핫한(?) 도커를 이용해 설치할 수 있도록 이미지 및 가이드를 주고 있다.

바로 아래 커맨드 한줄로 아주 손쉽게 구축 가능하다.

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


3. Battery Historian 웹 서비스

갓글 분들께서 이미 구축해 놓은 웹 서비스가 있다.

이도 저도 힘든 분이시라면 이곳으로 이동하여 진행.



측정 방법


측정 방법은 아주 간단하다.


측정 -> 덤프 -> Battery Historian을 통한 분석


좀더 자세하게 방식 설명을 해보자.


1. 측정


측정의 경우, 다음과 같이 앱의 배터리 상태가 '마지막으로 완전히 충전한 이후로 사용 안 함' 이 떠 있으면 된다.



해당 방법은 아주 간편하게 처리 가능한다.

1. 선을 꽂았다가 선을 뽑는다.

2. 휴대폰이 컴퓨터와 연결된 상태에서 아래 명령어 수행 


adb shell dumpsys batterystats --reset

위의 두 가지 방식으로 배터리 사용량을 초기화 하였다면, 이제 선을 뽑고 (이게 가장 중요!) 앱을 사용하면서 원하는 만큼 배터리를 측정한다.


2. 덤프


단말의 덤프 데이터 추출 방식은 adb shell을 통해 진행하며 다음의 명령어를 수행하여 처리한다.


adb bugreport > bugreport.txt


Android 7.0 이상의 단말의 경우는 아래 명령어로 수행해야 한다.


adb bugreport > bugreport.zip


여기까지 되었다면, 이제 분석만 하면 된다.


3. Battery Historian을 통한 분석


구축하거나 마지막 Url을 통해 Battery Historian 페이지에 접근하면 아래와 같은 화면이 뜰 것이다.



왼쪽에 Browse를 클릭하여 위에서 생성한 덤프 파일을 넣으면 아래와 같은 화면이 나오면서 배터리 분석이 가능하다.




특히, 맨 아래에 App Stats 항목에서는 측정하고자 하는 앱 별 배터리 사용량 지표 분석이 가능하다.

사용법은 간단하게, 현재 측정하고자 하는 앱의 패키지 명으로 필터 처리를 하면 되며, 해당 페이지에서 위에 보이는 것 처럼 현재 단말에서 사용된 배터리 량, 앱에서 사용한 CPU 사용 시간 및 CPU 사용으로 발생된 배터리 소모량 등 실제 앱이 사용한 배터리의 구체적 정보를 추출 및 분석 할 수 있다.


Battery Historian을 통해 분석된 내용 간략하게 공유하면 다음과 같다.

1. 복잡한 UI 구조를 갖지 않는다.

복잡한 UI는 내부 Layout 계산에 많은 시간과 배터리 소모가 발생한다.

2. 불필요한 네트워크는 지양한다.

서버 및 기타 네트워크 통신에 있어 통신량, 통신 방식의 조정을 통해 네트워크 빈도수를 낮추는 것 만으로도 배터리 사용량을 크게 줄일 수 있다.


위에 기술한 방식으로도 배터리 사용량은 크게 줄일 수 있으나 보다 높은 성능 개선을 위해서는 다음 포스트에서 좀더 자세하게 다루도록 한다.

반응형

+ Recent posts