AndroidCompass: A Dataset of Android Compatibility Checks in Code Repositories

Many developers and organizations implement apps for Android, the most widely used operating system for mobile devices. Common problems developers face are the various hardware devices, customized Android variants, and frequent updates, forcing them to implement workarounds for the different versions and variants of Android APIs used in practice. In this paper, we contribute the Android Compatibility checkS dataSet (AndroidCompass) that comprises changes to compatibility checks developers use to enforce workarounds for specific Android versions in their apps. We extracted 80,324 changes to compatibility checks from 1,394 apps by analyzing the version histories of 2,399 projects from the F-Droid catalog. With AndroidCompass, we aim to provide data on when and how developers introduced or evolved workarounds to handle Android incompatibilities. We hope that AndroidCompass fosters research to deal with version incompatibilities, address potential design flaws, identify security concerns, and help derive solutions for other developers, among others—helping researchers to develop and evaluate novel techniques, and Android app as well as operating-system developers in engineering their software.

[1]  David Lo,et al.  History Driven Program Repair , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[2]  Andreas Zeller,et al.  When do changes induce fixes? , 2005, ACM SIGSOFT Softw. Eng. Notes.

[3]  Yepang Liu,et al.  Taming Android fragmentation: Characterizing and detecting compatibility issues for Android apps , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[4]  Benjamin Livshits,et al.  DynaMine: finding common error patterns by mining software revision histories , 2005, ESEC/FSE-13.

[5]  Fan Long,et al.  Automatic patch generation by learning correct code , 2016, POPL.

[6]  Shing-Chi Cheung,et al.  PIVOT: Learning API-Device Correlations to Facilitate Android Compatibility Issue Detection , 2019, 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE).

[7]  Shijie Zhang,et al.  Propagating Bug Fixes with Fast Subgraph Matching , 2010, 2010 IEEE 21st International Symposium on Software Reliability Engineering.

[8]  Robert Heumüller,et al.  Guided pattern mining for API misuse detection by change-based code analysis , 2020, Autom. Softw. Eng..

[9]  Jian Pei,et al.  MAPO: Mining and Recommending API Usage Patterns , 2009, ECOOP.

[10]  Sunghun Kim,et al.  Memories of bug fixes , 2006, SIGSOFT '06/FSE-14.

[11]  Jacques Klein,et al.  CiD: automating the detection of API-related compatibility issues in Android apps , 2018, ISSTA.

[12]  Gabriele Bavota,et al.  API compatibility issues in Android: Causes and effectiveness of data-driven detection techniques , 2020, Empirical Software Engineering.

[13]  Jacob Krüger,et al.  Cooperative API misuse detection using correction rules , 2020, ICSE.

[14]  Miriam Ballhausen Free and Open Source Software Licenses Explained , 2019, Computer.

[15]  Yepang Liu,et al.  Understanding and Detecting Callback Compatibility Issues for Android Applications , 2018, 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[16]  Davide Spadini,et al.  PyDriller: Python framework for mining software repositories , 2018, ESEC/SIGSOFT FSE.

[17]  Gabriele Bavota,et al.  Data-Driven Solutions to Detect API Compatibility Issues in Android: An Empirical Study , 2019, 2019 IEEE/ACM 16th International Conference on Mining Software Repositories (MSR).

[18]  Helge Janicke,et al.  A Survey of COVID-19 Contact Tracing Apps , 2020, IEEE Access.

[19]  Mira Mezini,et al.  A Systematic Evaluation of Static API-Misuse Detectors , 2017, IEEE Transactions on Software Engineering.

[20]  Daniela E. Damian,et al.  The promises and perils of mining GitHub , 2009, MSR 2014.

[21]  Stephan Diehl,et al.  Usage and attribution of Stack Overflow code snippets in GitHub projects , 2018, Empirical Software Engineering.

[22]  Yepang Liu,et al.  Understanding and Detecting Fragmentation-Induced Compatibility Issues for Android Apps , 2020, IEEE Transactions on Software Engineering.

[23]  Lei Wang,et al.  Understanding and Detecting Evolution-Induced Compatibility Issues in Android Apps , 2018, 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[24]  Xiangyu Zhang,et al.  How Android Developers Handle Evolution-induced API Compatibility Issues: A Large-scale Study , 2020, 2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE).