Back to overview

API compatibility issues in Android: Causes and effectiveness of data-driven detection techniques

Type of publication Peer-reviewed
Publikationsform Original article (peer-reviewed)
Author Scalabrino Simone, Bavota Gabriele, Linares-Vásquez Mario, Piantadosi Valentina, Lanza Michele, Oliveto Rocco,
Project Exploratory Visual Analytics for Interaction Graphs
Show all

Original article (peer-reviewed)

Journal Empirical Software Engineering
Volume (Issue) 25(6)
Page(s) 5006 - 5046
Title of proceedings Empirical Software Engineering
DOI 10.1007/s10664-020-09877-w


Android fragmentation is a well-known issue referring to the adoption of different versions in the multitude of devices supporting such an operating system. Each Android version fea- tures a set of APIs provided to developers. These APIs are subject to changes and may cause compatibility issues. To support app developers, approaches have been proposed to automat- ically 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 (extension of our MSR 2019 paper), we present an alternative data-driven approach, named ACRYL. ACRYL learns from changes imple- mented in apps in response to API changes (“client side” learning). When comparing these two solutions on 668 apps, for a total of 11,863 snapshots, 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: ACRYL achieves a precision of 7.0% (28.0%, when considering only the severe warnings), while CID achieves a preci- sion of 18.4%. This calls for more research in this field, and led us to run a second empirical study in which we manually analyze 500 pull-requests likely related to the fixing of compat- ibility issues, documenting the root cause behind the fixed issue. The most common causes are related to changes in the Android APIs (∼ 87%), while about 13% of the issues are related to external causes, such as build and distribution, dependencies, and the app itself. The provided empirical knowledge can inform the building of better tools for the detection of API compatibility issues.