Characterizing and Detecting Battery Saver Bugs in Android Applications

More Info
expand_more

Abstract

Poor battery life is one of smartphone users’ top frustrations about their devices. This fact, in combination with the limited supply of battery minerals, the working
conditions of mining, and its environmental impact, has led to high interest in reducing smartphone energy consumption. Smartphone manufacturers have introduced power-saving features on their products and guide developers to use energy- efficient software engineering practices.

In literature, the increased awareness of the need to reduce energy consumption and reduce emissions has led to the birth of a Green Software research field. Focusing on mobile software, prior research has focused on quantifying energy use and finding instances of software using more energy than is reasonable for its intended purpose. However, the ubiquitous power-saving features of smartphones have hardly been studied until now. In particular, bugs stemming from Android’s Battery Saver mode, a power-saving technology introduced in 2017 by Google, have not been studied at all. This thesis aims to address this research gap.

To do so, we first characterize these issues by systematically collecting documentation pages, bug reports, and forum questions relating to these bugs. We find 13 separate problems, most of which (9 out of 13) have considerable user impact. Additionally, most problems are reported multiple times independently (mean re- porting frequency = 4.1) outside of Google documentation. Four of the problems have never been officially documented.

Driven by this characterization, we build a static analysis tool that detects one of the characterized issues. It builds a Conditional Call Graph to find invocations of the implicated Application Programming Interfaces (APIs) without asserting this API is available. The tool is fast and does not require source code to be available. It runs on the Java Virtual Machine for portability.

To evaluate the tool, we use a two-pronged approach. We first determine the ground truth for all 1,472 Google Play Store applications that are also available in the FDroid repository. We write a script to identify all suspicious API invocations, the bug candidates. We find and attempt to reproduce 178 of these bug candidates. We manually review all candidates to determine the ground truth. We evaluate our tool using the same data set. The tool reaches a precision of 0.911 and a recall of 0.911 and identifies 41 reproducible issues.

Lastly, we report the reproduced issues identified by the tool to the developers of the affected applications. To date, nine issues have been confirmed by the developers, and two issues have already been addressed.