THESIS
2020
xvi, 114 pages : color illustrations ; 30 cm
Abstract
Android ecosystem is heavily fragmented. The numerous combinations of different device models and operating system versions make it impossible for Android app developers to exhaustively test their apps. As a result, various compatibility issues arise, causing poor user experience.
Such fragmentation-induced compatibility issues (FIC issues) have been well-recognized as a prominent problem in Android app development. However, little is known on the characteristics of these FIC issues and no mature tools exist to help developers quickly diagnose and fix these issues. To bridge the gap, I conducted an empirical study on 220 real-world compatibility issues collected from five popular open-source Android apps. I further interviewed Android practitioners and conducted an online survey to gai...[
Read more ]
Android ecosystem is heavily fragmented. The numerous combinations of different device models and operating system versions make it impossible for Android app developers to exhaustively test their apps. As a result, various compatibility issues arise, causing poor user experience.
Such fragmentation-induced compatibility issues (FIC issues) have been well-recognized as a prominent problem in Android app development. However, little is known on the characteristics of these FIC issues and no mature tools exist to help developers quickly diagnose and fix these issues. To bridge the gap, I conducted an empirical study on 220 real-world compatibility issues collected from five popular open-source Android apps. I further interviewed Android practitioners and conducted an online survey to gain insights from their real practices. The study characterized the symptoms, root causes, and triggering contexts of the FIC issues, investigated common practices to handle the FIC issues, and disclosed that these issues and their patches exhibit common patterns. With these findings, I proposed a technique, FICFINDER, to automatically detect compatibility issues in Android apps. FICFINDER has been evaluated to be effective in detecting fragmentation-induced compatibility issues with high precision and satisfactory recall.
An important input required by FICFINDER is the FIC issue patterns that capture specific Android APIs as well as their associated context by which compatibility issues can be triggered. I denote such FIC issue patterns as API-context pairs. In the initial version of FICFINDER, the API-context pairs were manually extracted from the empirical study dataset. Manually extracting FIC issue patterns can be expensive. In addition, API-context pairs can eventually get outdated since FIC issues are evolving as new Android versions and devices are released. To address this problem, I developed a novel framework, PIVOT, that combines program analysis and data mining techniques to automatically learn API-context pairs from large corpora of popular Android apps. Specifically, PIVOT takes an Android app corpus as input and outputs a list of API-context pairs ranked by their likelihood of capturing real FIC issues. With the learned API-context pairs, we can further transfer knowledge learned from existing Android apps to automatically detect potential FIC issues using FICFINDER. This can significantly reduce the search space for FIC issues and benefit Android development community. To evaluate PIVOT, I measured the precision of the learned API-context pairs and leverage them to detect previously-unknown compatibility issues in open-source Android apps.
One fundamental limitation of PIVOT is that it can only learn FIC issue patterns that have already been identified and fixed by some existing apps. PIVOT can never identify a FIC issue if it is not fixed by any apps in the input app copora. To address this problem, I proposed PIXOR to leverage existing Android apps to proactively expose inconsistent behaviors of different Android versions. PIXOR selects and exercises subroutines of Android apps on different Android versions to expose inconsistent Android system behaviors. Such inconsistent behaviors can be useful to both Android system and app developers. On the one hand, some of the inconsistent behaviors may indicate bugs in the Android systems. Reporting them to the Android system developers may help improve the reliability of Android systems. On the other hand, some of the inconsistent behaviors can be intended customization of specific Android versions. Identifying such inconsistent behaviors can help app developers avoid FIC issues. In the evaluation, PIXOR has identified both bugs and intended system behavior changes in Android Q (Android 10, the latest version of Android system). Three of the identified bugs have been confirmed and fixed by the Android development team.
Post a Comment