We propose a novel technique called  API virtualization  to enable open innovation in Android. API virtualization inserts a shim layer between the Android platform layer and the app layer as shown in Figure 1, which can intercept any and every platform API call made by an app. In addition, API virtualization allows third-party developers to inject custom code, so that they can modify, reimplement, or customize existing Android APIs. This is achieved by (i) injecting a wrapper class for each platform API class that a third-party developer wants to replace, and (ii) rewriting the binary of an app so that the app code uses  wrapper classes  instead of platform API classes.   Our API virtualization is motivated by the lack of openness in mobile systems at the platform level. For example, Android is known to be an open platform since the source code is open; thirdparty developers easily access and modify the source. However, when it comes to deploying their platform-level modifications, there is a stiff barrier. Only Google and other mobile vendors such as Samsung, LG, etc. have the privilege to distribute platform modifications at a large scale. In other words, there are only a select few players who can control the innovation on Android.
['Taeyeon Ki', 'Alexander Simeonov', 'Karthik Dantu', 'Steven Y. Ko', 'Lukasz Ziarek']
Demo: API Virtualization for Platform Openness in Android