Demystifying Device-specific Compatibility Issues in Android Apps
Junfeng Chen, Kevin Li, Yifei Chen, Lili Wei, Yepang Liu
TL;DR
This paper empirically characterizes device-specific compatibility issues (DSC) in Android apps, addressing fragmentation introduced by OEM customizations that differ from API-evolution issues. It builds a dataset of 197 DSC issues from 94 GitHub repositories and introduces a two-type taxonomy: Functionality Break and OEM Feature, revealing distinct root causes and repair practices. Functionality Break issues predominantly affect Camera and UI functionalities and are often fixed by API substitutions, additional API calls, or parameter adjustments, while OEM Feature issues are addressed mainly through Reflection and Android inter-component communication, with vendor-specific adaptations. The findings inform targeted testing and automated repair tooling, and the publicly available dataset enables further study of DSC issues across Android ecosystems.
Abstract
The Android ecosystem is profoundly fragmented due to the frequent updates of the Android system and the prevalent customizations by mobile device manufacturers. Previous research primarily focused on identifying and repairing evolution-induced API compatibility issues, with limited consideration of devices-specific compatibility issues (DSC issues). To fill this gap, we conduct an empirical study of 197 DSC issues collected from 94 open-source repositories on GitHub. We introduce a new perspective for comprehending these issues by categorizing them into two principal groups, Functionality Breaks, and OEM Features, based on their manifestations and root causes. The functionality break issues disrupt standard Android system behaviors, lead to crashes or unexpected behaviors on specific devices, and require developers to implement workarounds to preserve the original functionality. The OEM feature issues involve the introduction of device-specific functionalities or features beyond the basic Android system. The different nature of functionality break issues and OEM feature issues lead to unique challenges in addressing them. Common solutions for functionality break issues involve calling additional APIs, substituting problematic ones, or using specific parameters, while resolving OEM feature issues often relies on Android inter-component communication methods and reflection, with additional unconventional strategies. Such observations highlight the distinctive challenges in addressing DSC issues in Android apps and will facilitate the future development of testing and analysis tools targeting these issues. Our study demonstrates that Functionality break and OEM feature issues have different characteristics, and future research may need to investigate them separately.
