Patterns for reusable android development
MetadataShow full item record
Software libraries, encapsulating functionality behind a clearly defined interface, are a key component of all modern software development. In Java and in other mature technologies, the development of a library is nearly as easy as and as standard as the development of an application. However, the Android development environment is not as oriented towards library development. As a result, much of the powerful and open source code Android developers have created and published is embedded within and highly coupled to its original application, so it cannot be re-used by other applications. Also, the Android library format has recently been enhanced to encapsulate Android application components extending the possibilities for an Android library to be more than what was essentially just a Java API. This gives the Android developer opportunities to create even more powerful libraries. However, in contrast to the Java API, the interfaces to these libraries are not well defined, not subject to automatic and comprehensive type checking, and not able to be documented in a standard way. Android and these more powerful libraries are a relatively new mobile technology. However, these shortcomings must be addressed for Android and its libraries to become mature technology and become as powerful as promised. After introducing the reader to select Android development concepts pertinent to this paper, I will present a brief case study of an existing Android library and application and cover lessons I learned there which motivated the work I present here. I subsequently review the tenets of library development, derived from the literature, from the perspective of Android. I created exam- ple libraries and applications using those libraries to illustrate best practices and key points on challenges in the Android ecosystem that hinder reusable development. A reader will also gain knowledge of how to create and publish his or her own library for use by others. Finally, I package the Android library I originally studied into a JAR file for the benefit of the wider development community.