Abstract

Android fragmentation is a well-known issue referring to the adoption, in the multitude of devices supporting the mobile operating system, of different Android versions. Recent reports show that the most adopted Android version (Oreo) is installed on only ∼28% of devices, with four other versions covering more than 10% of the devices each. Each Android version features a set of APIs provided to developers to build Android apps. These APIs are subject to changes and may result in compatibility issues. To support app developers, approaches have been proposed to automatically identify API compatibility issues. CiD, the state-of-the-art approach, is a data-driven solution learning how to detect those issues by analyzing the change history of Android APIs ("API side" learning). In this paper, we present an alternative data-driven approach, named ACRyL. ACRyL learns from changes implemented in other apps in response to API changes ("client side" learning). When comparing these two solutions, we found that there is no clear winner, since the two techniques are highly complementary, and none of them provides a comprehensive support in detecting API compatibility issues. This calls for more research in this field, and led us to run an empirical study in which we manually analyze 500 pull-requests likely related to the fixing of compatibility issues, documenting the root cause behind the fixed issue. The provided empirical knowledge can inform the building better tools for the detection of API compatibility issues.

Raw Data