An Empirical Study of Android API Use in Google and Non-Google Applications
Android is the most popular mobile platform powering hundreds of millions of mobile devices. Android provides an API that helps developers create Android applications by simplifying the reuse of core system components and services. Different developers may use the Android API in different ways for several reasons, including: their background, their knowledge of the platform and their team's policies. This variety in how developers interact with the Android API, makes Android API use analysis an interesting research topic. Android is owned and maintained by Google. In each release of the Android API, Google introduces new capabilities and deprecates some of the old ones. In this thesis, we investigate the fact that, since Google is itself both maintaining and using the API at the same time, it may be using Android differently than other developers. In order to explore our research questions, since existing methods could not address some of the challenges in our study, we proposed a new method for analyzing Android API use in closed source Android applications. This method works on obfuscated applications and radically reduces the noise produced by embedded API calls in the unused parts of third-party libraries. Using the proposed method, we conducted an experiment for comparing Android API use in 19 popular Google applications to 19 non-Google similar applications and answered four specific research questions that show the differences between these two groups of applications. The analysis in this thesis can be helpful for Android developers to find out how Google, as the owner and maintainer of Android, is using the Android API. Additionally, Google can use this information to observe how the changes they make affect the developers' interaction with the Android API.