Support free tutorials

vogella training Training Books

Creating libraries for Android applications - Tutorial

Lars Vogel

Version 2.2


Android Library Projects

This tutorial describes how to create and use library projects in Android. The tutorial is based on Eclipse 4.4, Java 1.6 and Android 5.0.

Table of Contents

1. Android library projects and Java libraries
2. Using JAR files in Android
2.1. How to use JAR files
2.2. Using Eclipse ADT
2.3. Using Android Studio
2.4. Restrictions in using Java libraries
3. Custom Android library modules
3.1. Using custom library modules
3.2. Priorities for conflicting resources
4. Creating custom Android library modules in Android Studio
5. Creating custom Android library modules
5.1. Defining Libraries modules in Eclipse ADT
6. Android library project
7. The support libraries from Google
7.1. Scope of the support libraries
7.2. Which support libraries are available
7.3. Using the support libraries in Eclipse
8. Prerequisite
9. Exercise: Create Android library module
9.1. Target
9.2. RSS - Really Simple Syndication
9.3. Using Android Studio: Create library module
9.4. Using Eclipse ADT: Create library module
9.5. Create Model class
9.6. Create instances
9.7. Android Studio: Define dependency to the library project
9.8. Eclipse ADT: Define dependency to the library project
9.9. Use library project to update detailed fragments
10. About this website
10.1. Donate to support free tutorials
10.2. Questions and discussion
10.3. License for this tutorial and its code
11. Links and Literature
11.1. Source Code
11.2. Android library resources
11.3. vogella Resources

1. Android library projects and Java libraries

Android project can use code contained in JAR files (Java libraries). It is also possible to create libraries modules which can be used as dependencies in Android projects. These modules allow you to store source code and Android resources which can be shared between several other Android projects.

2. Using JAR files in Android

2.1. How to use JAR files

To use a Java library (JAR file) inside your Android project, you can simple copy the JAR file into the folder called libs in your application. Depending on your IDE this automatically makes your JAR available or your have to do an additional step.

2.2. Using Eclipse ADT

The Eclipse ADT tooling adds the JAR file automatically to the classpath of your project. During deployment the Android tooling compiles the .class files in the Android .dex file which contains the Android byte-code.

This automatic addition to the classpath requires that you call the folder libs.

2.3. Using Android Studio

In Android Studio you have to

  • Right-click the JAR file in the libs folder and select Add as library.

  • Check that you have a new entry compile files('libs/YOURJAR.jar' in your build.gradle file.

  • To ensure that the change is picked up, perform a clean build.

2.4. Restrictions in using Java libraries

If you want to use libraries, these must only use API available in Android. For example, the Android libraries do not contain the java.awt and javax.swing user interface libraries, as Android has its own user interface toolkit.

Library projects cannot be compiled to Android applications and started without another project using them.

Using library projects helps you to structure your application code. Also more and more important Open Source libraries are available for Android. Understanding library projects is therefore important for every Android programmer.

3. Custom Android library modules

3.1. Using custom library modules

If an Android application project uses an Android library module, the Android development tools include the code and resources from the library project into the build result of the Android project. This means, that the components, code and resources of the library project are compiled and packaged into the .apk file of the compiled application.

Therefore a library module can be considered to be a compile-time artifact. An Android library module can contain Java classes, Android components and resources. Only assets are not supported.

To create a library project, set the Mark this project as library flag in the Android project generation wizard.

The library project must declare all its components, e.g., activities, service, etc. via the AndroidManifest.xml file. The application which uses the library must also declare all the used components via the AndroidManifest.xml file.

3.2. Priorities for conflicting resources

The Android development tools merges the resources of a library project with the resources of the application project. In the case that a resource's ID is defined several times, the tools select the resource from the application, or the library with highest priority, and discard the other resource.

4. Creating custom Android library modules in Android Studio

To create a new libary module in Android Studio, select FileNew Module and select Android Library.

5. Creating custom Android library modules

5.1. Defining Libraries modules in Eclipse ADT

To use such a library, select the generated project, right-click on it and select Properties. On the Android tab, add the library project to it.

If you define components, e.g., activities in your library project, you need to re-define these components in the consuming Android application. If you want to automatically add all components from your library project to your application, add the manifestmerger.enabled=true to your file of your application project.

6. Android library project

The Android team introduced a new binary distribution format called Android ARchive(AAR). The <filenname>.aar</filenname> bundle is the binary distribution of an Android Library Project.

An AAR is similar to a JAR file, but it can contain resources as well as compiled byte-code. This allows that an AAR file is included in the build process of an Android application similar to a JAR file


This AAR format is currently directly support by the Eclipse IDE. Stare on the following issue so that Google solves this issue: Allows Eclipse ADT plugin to work with .AAR files .


It is still possible to use AAR files with Eclipse. You can either convert them to to Android library projects as described in Consuming AARs from Eclipse blog post about it.

or use the Android Maven plug-in for your build.

7. The support libraries from Google

7.1. Scope of the support libraries

The Android Support Library package contains several libraries that supports new features or features of higher Android versions in earlier Android versions.

7.2. Which support libraries are available

You have different components here. At the time of this writing you have:

Table 1. Support library versions

Support Library Description Location
v4 Support Library Designed for Android 1.6 (API level 4) or higher. Includes lots of things including support for Fragments and the Loader framework. Located in the android-sdk/extras/android/support/v7/appcompat/ directory.
v7 Support Libraries Set of libraries which require Android 2.1 (API level 7) and higher. Requires also the v4 Support library.  
v7 appcompat library Adds support for the Action Bar. Includes also support for material design user interface. Located in the android-sdk/extras/android/support/v7/appcompat/
v7 cardview library Adds support for the CardView widget. android-sdk/extras/android/support/v7/cardview/
v7 recyclerview library Adds support for the RecyclerView widget. android-sdk/extras/android/support/v7/recyclerview/

To see a complete list of the available libraries see

7.3. Using the support libraries in Eclipse

You first need to download them via the Android SDK manager.

Copy the support libraries JAR file from its folder into the libs folder in your Android project.

For a more comprehensive description see

8. Prerequisite

The following example assumes that you have created a normal Android project called based on the Android Fragments tutorial.

9. Exercise: Create Android library module

9.1. Target

Our library project will not contribute Android components but a data model and a method to get the number of instances. The library provides access to (fake) RSS data. An RSS document is an XML file which can be used to publish blog entries and news. The format of the XML file is specified via the RSS specification.

Our library project will not contribute Android components but a data model and a method to get the number of instances. We will provide RSS-feed data. The following gives a short introduction into RSS.

9.2. RSS - Really Simple Syndication

An RSS document is an XML file which can be used to publish blog entries and news. The format of the XML file is specified via the RSS specification.

RSS stands for Really Simple Syndication (in version 2.0 of the RSS specification).

Typically a RSS file is provided by a web server, which RSS client read. These RSS clients parse the file and display it.

9.3. Using Android Studio: Create library module

For Android Studio each library is a module. To create a new libary module in Android Studio, select FileNew Module and select Android Library.

Use as module name.

Setting the library property

Setting the library property

9.4. Using Eclipse ADT: Create library module

Eclipse ADT defines a library module via project which an additional property. Therefore create a new Android project called You do not need to create an activity.

On the second page of the wizard select the option that the new project is a library project.

Setting the library property

To ensure that the project is configured as library project, right-click on the Android project and select Properties. Ensure that the is Library flag is set.

Setting the library property

9.5. Create Model class

Create an RssItem class which can store data of an RSS entry.

Generate the getters and setter, the constructor and a toString() method. The result should look like the following class:


public class RssItem {
  private String pubDate;
  private String description;
  private String link;
  private String title;

  public RssItem() {
  public RssItem(String title, String link) {
    this.title = title; = link;

  public String getPubDate() {
    return pubDate;

  public void setPubDate(String pubDate) {
    this.pubDate = pubDate;

  public String getDescription() {
    return description;

  public void setDescription(String description) {
    this.description = description;

  public String getLink() {
    return link;

  public void setLink(String link) { = link;

  public String getTitle() {
    return title;

  public void setTitle(String title) {
    this.title = title;

  public String toString() {
    return "RssItem [title=" + title + "]";


9.6. Create instances

Create a new class called RssFeedProvider with a static method to return a list of RssItem objects.


import java.util.ArrayList;
import java.util.List;

public class RssFeedProvider {
  // Helper method to get a list
  // of RssItems

  public static List<RssItem> parse(String rssFeed) {

    List<RssItem> list = new ArrayList<RssItem>();

    // create some example data
    RssItem item = new RssItem("test1", "l1");
    item = new RssItem("test2", "l2");
    // TODO create a few more instances of RssItem

    return list;

Solve the TODOs to create example instances of the RssItem class and add it to the list. This method does currently only return test data.

9.7. Android Studio: Define dependency to the library project

To use the library add it as a dependancy in your project select FileProject StructureModuleDependencies.

Define dependency in Android Studio - Selecting dependency

Define dependency in Android Studio - Select module

9.8. Eclipse ADT: Define dependency to the library project

In your application project, define that you want to use the library project via the project properties. For this, right click on the project and select Properties from the context menu.

Afterwards select the Android entry in the dialog. Use the Add... button in the Library section and add a reference to your library project.

Using the library property

9.9. Use library project to update detailed fragments

Use the static method of RssFeedProvider to get the list of RssItem objects and display the number in your DetailFragment instead of current system time.

To send the new data, change your MyListFragment class:

public void updateDetail() {
  List<RssItem> list = RssFeedProvider
    String text = String.valueOf(list.size());

10. About this website

10.1. Donate to support free tutorials

Please consider a contribution Support free tutorials if this article helped you. It will help to maintain our content and our Open Source activities.

10.2. Questions and discussion

Writing and updating these tutorials is a lot of work. If this free community service was helpful, you can support the cause by giving a tip as well as reporting typos and factual errors.

If you find errors in this tutorial, please notify me (see the top of the page). Please note that due to the high volume of feedback I receive, I cannot answer questions to your implementation. Ensure you have read the vogella FAQ as I don't respond to questions already answered there.

10.3. License for this tutorial and its code

This tutorial is Open Content under the CC BY-NC-SA 3.0 DE license. Source code in this tutorial is distributed under the Eclipse Public License. See the vogella License page for details on the terms of reuse.

11. Links and Literature

11.1. Source Code

Source Code of Examples

11.2. Android library resources

Google guide to install the support libraries

11.3. vogella Resources

The vogella company provides comprehensive training and education services from experts in the areas of Eclipse RCP, Android, Git, Java, Gradle and Spring. We offer both public and inhouse training. Whichever course you decide to take, you are guaranteed to experience what many before you refer to as “The best IT class I have ever attended”. The vogella company offers expert consulting services, development support and coaching. Our customers range from Fortune 100 corporations to individual developers.