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.
翻译:Android生态系统因Android系统的频繁更新及移动设备厂商普遍进行的定制化而高度碎片化。先前研究主要集中于识别和修复由系统演进引起的API兼容性问题,对设备特定兼容性问题(DSC问题)的关注有限。为填补这一空白,我们对从GitHub上94个开源仓库收集的197个DSC问题进行了实证研究。基于其表现形式和根本原因,我们引入了一种新的视角来理解这些问题,将其分为功能中断和OEM特性两大类。功能中断问题会破坏标准Android系统行为,导致特定设备上出现崩溃或意外行为,需要开发者实施变通方案以维持原有功能。OEM特性问题则涉及在基础Android系统之外引入设备特定的功能或特性。功能中断问题与OEM特性问题的不同性质导致了解决它们时面临的独特挑战。功能中断问题的常见解决方案包括调用额外API、替换有问题的API或使用特定参数,而解决OEM特性问题通常依赖于Android组件间通信方法和反射机制,并辅以其他非常规策略。这些观察结果凸显了解决Android应用中DSC问题所面临的特殊挑战,并将促进未来针对这些问题的测试与分析工具的开发。我们的研究表明,功能中断问题和OEM特性问题具有不同的特征,未来研究可能需要分别对它们进行深入探讨。