Inter-app communication in Android: developer challenges

Authors : Waqar Ahmad , Christian Kästner , Joshua Sunshine , Jonathan Aldrich Authors Info & Claims

Pages 177 - 188 Published : 14 May 2016 Publication History 11 citation 237 Downloads Total Citations 11 Total Downloads 237 Last 12 Months 10 Last 6 weeks 1 Get Citation Alerts

New Citation Alert added!

This alert has been successfully added and will be sent to: You will be notified whenever a record that you have chosen has been cited.

To manage your alert preferences, click on the button below. Manage my Alerts

New Citation Alert!

Abstract

The Android platform is designed to support mutually untrusted third-party apps, which run as isolated processes but may interact via platform-controlled mechanisms, called Intents. Interactions among third-party apps are intended and can contribute to a rich user experience, for example, the ability to share pictures from one app with another. The Android platform presents an interesting point in a design space of module systems that is biased toward isolation, extensibility, and untrusted contributions. The Intent mechanism essentially provides message channels among modules, in which the set of message types is extensible. However, the module system has design limitations including the lack of consistent mechanisms to document message types, very limited checking that a message conforms to its specifications, the inability to explicitly declare dependencies on other modules, and the lack of checks for backward compatibility as message types evolve over time. In order to understand the degree to which these design limitations result in real issues, we studied a broad corpus of apps and cross-validated our results against app documentation and Android support forums. Our findings suggest that design limitations do indeed cause development problems. Based on our results, we outline further research questions and propose possible mitigation strategies.

References

J. Aldrich, C. Chambers, and D. Notkin. Archjava: Connecting software architecture to implementation. In Proceedings of the 24th International Conference on Software Engineering, pages 187--197, 2002.

C. Artho, K. Suzaki, R. D. Cosmo, R. Treinen, and S. Zacchiroli. Why do software packages conflict? In Proceedings of the 9th IEEE Working Conference on Mining Software Repositories, pages 141--150, 2012.

T. Berger, R.-H. Pfeiffer, R. Tartler, S. Dienst, K. Czarnecki, A. Wąsowski, and S. She. Variability mechanisms in software ecosystems. Information and Software Technology, 56(11): 1520--1535, November 2014.

M. Blume and A. W. Appel. Hierarchical modularity. ACM Trans. Program. Lang. Syst. (TOPLAS), 21(4):813--847, 1999.

C. Bogart, C. Kästner, and J. Herbsleb. When it breaks, it breaks: How ecosystem developers reason about the stability of dependencies. In Proceedings of the ASE Workshop on Software Support for Collaborative and Global Software Engineering, 2015.

M. Calder, M. Kolberg, E. H. Magill, and S. Reiff-Marganiec. Feature interaction: A critical review and considered forecast. Computer Networks, 41(1):115--141, 2003.

R. D. Cosmo, D. D. Ruscio, P. Pelliccione, A. Pierantonio, and S. Zacchiroli. Supporting software evolution in component-based FOSS systems. Sci. Comput. Program., 76(12): 1144--1160, 2011.

B. E. Cossette and R. J. Walker. Seeking the ground truth: A retroactive study on the evolution and migration of software libraries. In Proc. Int'l Symposium Foundations of Software Engineering (FSE), pages 55:1--55:11, 2012.

W. Enck, P. Gilbert, B.-G. Chun, L. P. Cox, J. Jung, P. McDaniel, and A. N. Sheth. Taintdroid: an information-flow tracking system for realtime privacy monitoring on smartphones. In Proceedings of the 9th USENIX conference on Operating systems design and implementation, pages 1--6, 2010.

L. Eshkevari, G. Antoniol, J. R. Cordy, and M. Di Penta. Identifying and locating interference issues in PHP applications: The case of WordPress. In Proceedings of the 22nd International Conference on Program Comprehension, pages 157--167, 2014.

M. Greiler, A. van Deursen, and M.-A. Storey. Test confessions: A study of testing practices for plug-in systems. In Proceedings of the 34th International Conference on Software Engineering, pages 244--254, 2012.

J. Gui, S. Mcilroy, M. Nagappan, and W. G. J. Halfond. Truth in advertising: The hidden cost of mobile ads for software developers. In Proceedings of the 37th International Conference on Software Engineering, pages 100--110, May 2015.