Understanding Android OS Forward Compatibility Support for Legacy Apps

Citation Author(s):
Submitted by:
Shuang Li
Last updated:
Fri, 03/08/2024 - 22:17
Data Format:
0 ratings - Please login to submit your rating.


The update of Android OS constantly brings users various new features and enhances system security. On the other hand, the system and API modifications with the update may introduce the app compatibility issue. The app's SDK version may not align with the Android OS version, making apps not work adequately. This condition will inevitably damage the Android ecosystem. Thus, while developing Android OS, Google considered and deployed compatibility support. The software engineering research community also noticed the Android compatibility issue and conducted some investigations. However, most previous studies focus on apps' performance and solutions on compatibility (apps running on multiple OS versions). Rare work considers the Android OS side's forward compatibility implementations (supporting legacy apps running on the latest OS).

This work systematically studied how Android OS implements forward compatibility for the apps developed with outdated SDKs, primarily focusing on the targetSdkVersion-based fine-grained control. Specifically, we propose three research questions, covering: 1) the forward compatibility support approaches; 2) the stability of foforward compatibility support in third-party market apps. To address these questions, we conducted comprehensive measurements on Android's forward compatibility support, including its implementation, implications, and evolution. Our measurements were based on large-scale datasets covering the source code of Android 8.0~13 and 130,461 apps. Finally, we provide rich data support and analysis to answer these questions. This study offers new insights into Android's forward compatibility support, helping the research community understand the evolution of Android's API design.


1. You can compile the source code of AOSP and convert all odex, vdex, apk, apex, capex, oat, and dex files in its System directory to jar files using vdexextractor, baksmali, smali, apktool, oat2dex, and dex2jar for static analysis with WALA.

2. Fill in the folder where all the jar files to be analyzed are located on line 22 of the src/start/Main.java. For common types: Fill in the customized output file name in lines 228 and 229 of the src/interAnalysis/InterAnalysis.java, and then run the analysis. For EnabledX types: Scan the source code to get all the EnabledX fields and store them in an Excel file, then fill the file into Line 390 of src/interAnalysis/ChangeIdInterAnalysis.java, and fill in the custom output files in Lines 150, 286, and 383, and finally run the analysis.