Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2970276.2970312acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
research-article

Taming Android fragmentation: characterizing and detecting compatibility issues for Android apps

Published: 25 August 2016 Publication History

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. However, little is known on the characteristics of such fragmentation-induced compatibility issues and no mature tools exist to help developers quickly diagnose and fix these issues. To bridge the gap, we conducted an empirical study on 191 real-world compatibility issues collected from popular open-source Android apps. Our study characterized the symptoms and root causes of compatibility issues, and disclosed that the patches of these issues exhibit common patterns. With these findings, we propose a technique named FicFinder to automatically detect compatibility issues in Android apps. FicFinder performs static code analysis based on a model that captures Android APIs as well as their associated context by which compatibility issues are triggered. FicFinder reports actionable debugging information to developers when it detects potential issues. We evaluated FicFinder with 27 large-scale open-source Android apps. The results show that FicFinder can precisely detect compatibility issues in these apps and uncover previously-unknown issues.

References

[1]
1Sheeld: The Arduino Shield. https://github.com/Integreight/1Sheeld-Android-App.
[2]
Amazon Device Farm. https://aws.amazon.com/device-farm/.
[3]
Android - Proximity Sensor Accuracy - Stack Overflow. http://stackoverflow.com/questions/16876516/proximitysensor-accuracy/29954988#29954988.
[4]
Android Fragmentation Visualized (August 2015). http://opensignal.com/reports/2015/08/ android-fragmentation/.
[5]
Android Interfaces and Architecture. https://source.android.com/devices/index.html.
[6]
Android Open Source Project – Issue Tracker. https://code.google.com/p/android/issues/.
[7]
Android’s Fragmentation Problem. http://www.greyheller.com/Blog/androidsfragmentation-problem/.
[8]
AnkiDroid. https://github.com/ankidroid/Anki-Android.
[9]
AntennaPod. https://github.com/AntennaPod/AntennaPod.
[10]
AnySoftKeyboard. https://github.com/AnySoftKeyboard/AnySoftKeyboard/.
[11]
BankDroid. https://github.com/liato/android-bankdroid.
[12]
Bitcoin Wallet. https://github.com/bitcoin-wallet/bitcoin-wallet/.
[13]
Brave Android Browser. https://github.com/brave/browser-android.
[14]
c:geo. https://github.com/cgeo/cgeo.
[15]
ChatSecure for Android. https://github.com/guardianproject/ChatSecureAndroid.
[16]
ConnectBot. https://github.com/connectbot/connectbot.
[17]
Conversations. https://github.com/siacs/Conversations.
[18]
CSipSimple. https://github.com/r3gis3r/CSipSimple.
[19]
CSipSimple – Issues. https://code.google.com/archive/p/csipsimple/issues/.
[20]
Dashboards | Android Developers. http://developer.android.com/about/dashboards/index.html.
[21]
Evercam. https://github.com/evercam/evercam-play-android.
[22]
F-Droid. https://f-droid.org/.
[23]
FicFinder Project Website. http://sccpu2.cse.ust.hk/ficfinder/.
[24]
GitHub. https://github.com/.
[25]
Google Code. https://code.google.com/.
[26]
iNaturalistAndroid. https://github.com/inaturalist/iNaturalistAndroid.
[27]
IrssiNotifier. https://github.com/murgo/IrssiNotifier.
[28]
K9-Mail. https://github.com/k9mail/k-9.
[29]
Kore. https://github.com/xbmc/Kore.
[30]
On Android Compatibility. http://android-developers. blogspot.com/2010/05/on-android-compatibility.html.
[31]
Open GPS Tracker. https://github.com/rcgroot/open-gpstracker.
[32]
OpenVPN for Android. https://github.com/OpenVPN/openvpn.
[33]
ownCloud. https://github.com/hypery2k/owncloud.
[34]
PactrackDroid. https://github.com/firetech/PactrackDroid.
[35]
PocketHub. https://github.com/pockethub/PocketHub.
[36]
Position Sensors | Android Developers. http://developer.android.com/guide/topics/sensors/ sensors position.html.
[37]
QKSMS. https://github.com/qklabs/qksms.
[38]
Smartphone OS Market Share, 2015 Q2. http://www.idc.com/prodserv/smartphone-os-marketshare.jsp.
[39]
Stack OverFlow. http://stackoverflow.com/.
[40]
Telegram. https://github.com/DrKLO/Telegram.
[41]
Transdroid. https://github.com/erickok/transdroid.
[42]
VLC – Android. https://code.videolan.org/videolan/vlc-android.
[43]
VLC Bug Tracker. https://trac.videolan.org/vlc/.
[44]
WordPress for Android. https://github.com/wordpress-mobile/WordPress-Android.
[45]
S. R. Choudhary, A. Gorla, and A. Orso. Automated Test Input Generation for Android: Are We There Yet?(E). In ASE, pages 429–440, 2015.
[46]
J. W. Creswell. Qualitative Inquiry and Research Design: Choosing Among Five Approaches (3rd Edition). SAGE Publications, Inc., 2013.
[47]
J. Ferrante, K. J. Ottenstein, and J. D. Warren. The program dependence graph and its use in optimization. TOPLAS, 9(3):319–349, 1987.
[48]
D. Grove, G. DeFouw, J. Dean, and C. Chambers. Call Graph Construction in Object-Oriented Languages. In OOPSLA, pages 108–124, 1997.
[49]
M. Halpern, Y. Zhu, R. Peri, and V. J. Reddi. Mosaic: Cross-Platform User-Interaction Record and Replay for the Fragmented Android Ecosystem. In ISPASS, pages 215–224, 2015.
[50]
H. K. Ham and Y. B. Park. Designing Knowledge Base Mobile Application Compatibility Test System for Android Fragmentation. IJSEIA, 8(1):303–314, 2014.
[51]
D. Han, C. Zhang, X. Fan, A. Hindle, K. Wong, and E. Stroulia. Understanding Android Fragmentation with Topic Analysis of Vendor-Specific Bugs. In WCRE, pages 83–92, 2012.
[52]
A. Holzinger, P. Treitler, and W. Slany. Making Apps Useable on Multiple Different Mobile Platforms: On Interoperability for Business Application Development on Smartphones. In CD-ARES, pages 176–189. 2012.
[53]
M. E. Joorabchi, A. Mesbah, and P. Kruchten. Real Challenges in Mobile App Development. In ESEM, pages 15–24, 2013.
[54]
J. Kaasila, D. Ferreira, V. Kostakos, and T. Ojala. Testdroid: Automated Remote UI Testing on Android. In MUM, page 28, 2012.
[55]
H. Khalid, M. Nagappan, E. Shihab, and A. E. Hassan. Prioritizing the Devices to Test Your App on: A Case Study of Android Game Apps. In FSE, pages 610–620, 2014.
[56]
Y. Kim, Y. Kim, T. Kim, G. Lee, Y. Jang, and M. Kim. Automated Unit Testing of Large Industrial Embedded Software Using Concolic Testing. In ASE, pages 519–528, 2013.
[57]
P. Lam, E. Bodden, O. Lhoták, and L. Hendren. The Soot Framework for Java Program Analysis: A Retrospective. In CETUS, 2011.
[58]
H. Li, X. Lu, X. Liu, T. Xie, K. Bian, F. X. Lin, Q. Mei, and F. Feng. Characterizing Smartphone Usage Patterns from Millions of Android Users. In IMC, pages 459–472, 2015.
[59]
M. Linares-Vásquez, G. Bavota, C. Bernal-Cárdenas, M. Di Penta, R. Oliveto, and D. Poshyvanyk. API Change and Fault Proneness: A Threat to the Success of Android Apps. In FSE, pages 477–487, 2013.
[60]
M. Linares-Vásquez, G. Bavota, M. Di Penta, R. Oliveto, and D. Poshyvanyk. How Do API Changes Trigger Stack Overflow Discussions? A Study on the Android SDK. In ICPC, pages 83–94, 2014.
[61]
Y. Liu, C. Xu, and S. Cheung. Characterizing and Detecting Performance Bugs for Smartphone Applications. In ICSE, pages 1013–1024, 2014.
[62]
X. Lu, X. Liu, H. Li, T. Xie, Q. Mei, D. Hao, G. Huang, and F. Feng. PRADA: Prioritizing Android Devices for Apps by Mining Large-Scale Usage Data. In ICSE, 2016.
[63]
T. McDonnell, B. Ray, and M. Kim. An Empirical Study of API Stability and Adoption in the Android Ecosystem. In ICSM, pages 70–79, 2013.
[64]
F. Nayebi, J.-M. Desharnais, and A. Abran. The State of the Art of Mobile Application Usability Evaluation. In CCECE, pages 1–4, 2012.
[65]
A. Pathak, Y. C. Hu, and M. Zhang. Bootstrapping Energy Debugging on Smartphones: A First Look at Energy Bugs in Mobile Devices. In HotNets, page 5. ACM, 2011.
[66]
Y. Tian, M. Nagappan, D. Lo, and A. E. Hassan. What are the Characteristics of High-Rated Apps? A Case Study on Free Android Applications. In ICSME, pages 301–310, 2015.
[67]
S. Vilkomir and B. Amstutz. Using Combinatorial Approaches for Testing Mobile Applications. In ICSTW, pages 78–83, 2014.
[68]
L. Wu, M. Grace, Y. Zhou, C. Wu, and X. Jiang. The Impact of Vendor Customizations on Android Security. In CCS, pages 623–634, 2013.
[69]
D. Zhang and B. Adipat. Challenges, Methodologies, and Issues in the Usability Testing of Mobile Applications. IJHCI, 18(3):293–308, 2005.
[70]
X. Zhou, Y. Lee, N. Zhang, M. Naveed, and X. Wang. The Peril of Fragmentation: Security Hazards in Android Device Driver Customizations. In SP, pages 409–423, 2014.

Cited By

View all
  • (2024)FILO: Automated FIx-LOcus Identification for Android Framework Compatibility IssuesInformation10.3390/info1508042315:8(423)Online publication date: 23-Jul-2024
  • (2024)Same App, Different Behaviors: Uncovering Device-specific Behaviors in Android AppsProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695272(2099-2109)Online publication date: 27-Oct-2024
  • (2024)Effective, Platform-Independent GUI Testing via Image Embedding and Reinforcement LearningACM Transactions on Software Engineering and Methodology10.1145/367472833:7(1-27)Online publication date: 21-Jun-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ASE '16: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering
August 2016
899 pages
ISBN:9781450338455
DOI:10.1145/2970276
  • General Chair:
  • David Lo,
  • Program Chairs:
  • Sven Apel,
  • Sarfraz Khurshid
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 25 August 2016

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Android fragmentation
  2. compatibility issues

Qualifiers

  • Research-article

Conference

ASE'16
Sponsor:

Acceptance Rates

Overall Acceptance Rate 82 of 337 submissions, 24%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)100
  • Downloads (Last 6 weeks)6
Reflects downloads up to 14 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)FILO: Automated FIx-LOcus Identification for Android Framework Compatibility IssuesInformation10.3390/info1508042315:8(423)Online publication date: 23-Jul-2024
  • (2024)Same App, Different Behaviors: Uncovering Device-specific Behaviors in Android AppsProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695272(2099-2109)Online publication date: 27-Oct-2024
  • (2024)Effective, Platform-Independent GUI Testing via Image Embedding and Reinforcement LearningACM Transactions on Software Engineering and Methodology10.1145/367472833:7(1-27)Online publication date: 21-Jun-2024
  • (2024)When simplicity meets effectiveness: Detecting code comments coherence with word embeddings and LSTMProceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering10.1145/3661167.3661187(411-416)Online publication date: 18-Jun-2024
  • (2024)Large Language Model vs. Stack Overflow in Addressing Android Permission Related ChallengesProceedings of the 21st International Conference on Mining Software Repositories10.1145/3643991.3644933(373-383)Online publication date: 15-Apr-2024
  • (2024)Mapping APIs in Dynamic-typed Programs by Leveraging Transfer LearningACM Transactions on Software Engineering and Methodology10.1145/364184833:4(1-29)Online publication date: 18-Apr-2024
  • (2024)APICIA: An API Change Impact Analyzer for Android AppsProceedings of the 2024 IEEE/ACM 46th International Conference on Software Engineering: Companion Proceedings10.1145/3639478.3640041(99-103)Online publication date: 14-Apr-2024
  • (2024)Practical Non-Intrusive GUI Exploration Testing with Visual-based Robotic ArmsProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639161(1-13)Online publication date: 20-May-2024
  • (2024)Measuring and Characterizing (Mis)compliance of the Android Permission SystemIEEE Transactions on Software Engineering10.1109/TSE.2024.336292150:4(742-764)Online publication date: 12-Feb-2024
  • (2024)Understanding Android OS Forward Compatibility Support for Legacy Apps: A Data-Driven Analysis2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00029(216-226)Online publication date: 12-Mar-2024
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media