Android Library Projects - Tutorial

http://www.vogella.com/articles/AndroidLibraryProjects/article.html


Android Library Projects - Tutorial

Lars Vogel

Version 1.3

03.06.2013

Revision History
Revision 0.1 16.03.2012 Lars
Vogel
Created
Revision 0.2 - 1.3 16.04.2012 - 03.06.2013 Lars
Vogel
bugfixes and updates

Android Library Projects

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


1. Android library projects

1.1. Motivation

Android library projects allow to store source code and resources which are used by several other Android projects. The Android development tools compile the content of library into the Android project by creating a JAR file.

Library projects cannot be compiled to Android applications directly.

Using library projects help 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.

1.2. Creating and using library projects

If the Android development tools build a project which uses a library project, it also builds the components of the library and adds them to the .apk file of the compiled application.

Therefore a library project can be considered to be a compile-time artifact. A Android library project 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.

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.

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

Other projects can now use this library project. This can also be set via the properties of the corresponding project.

1.3. 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 resources ID is defined several times, the tools select the resource from the application, or the library with highest priority, and discard the other resource.

2. Using JAR files in Android

To use a Java library inside your Android project directly, you can create a folder called libs and place your JAR into this folder.

Tip

If you call the folder libs, the Android Development Tools automatically add the JAR file to the classpath of your project.

3. Prerequisite

The following example assumes that you have created a normal Android project calledcom.example.android.rssfeed based on Android Fragments tutorial .

4. Tutorial: Create Android library projects

4.1. Create library project

Create a new Android project called com.example.android.rssfeedlibrary. Do not need to create anactivity.

Setting the library property

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

4.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 webserver, which RSS client read. These RSS clients parse the file and display it.

4.3. Create Model class

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

package com.example.android.rssfeedlibrary;

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

Use Eclipse code generation capabilities which can be found in the menu under Source to generate the getters and setter, the constructor and a toString() method. The result should look like the following class.

package com.example.android.rssfeedlibrary;

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;
    this.link = 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) {
    this.link = link;
  }

  public String getTitle() {
    return title;
  }

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

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

} 

4.4. Create instances

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

package com.example.android.rssfeedlibrary;

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");
    list.add(item);
    item = new RssItem("test2", "l2");
    list.add(item);
    // 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.

4.5. Set as library project

Right-click on the Android project and select Properties. Ensure that the is Library flag is set.

Setting the library property

4.6. Use library project

In your application project defines that you want to use the library project via the project properties.

Using the library property

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.

// Update the method updateDetail() {
// more code....

// Reading the RSS items
List<RssItem> list = RssFeedProvider
  .parse("http://www.vogella.com/article.rss");
String text = String.valueOf(list.size());
// TODO send text to the Detail fragment 

5. Thank you

Please help me to support this article:

Flattr this
 

6. Questions and Discussion

Before posting questions, please see the vogella FAQ. If you have questions or find an error in this article please use the www.vogella.com Google Group. I have created a short list how to create good questions which might also help you.

7. Links and Literature

7.1. Source Code

Source Code of Examples

7.3. vogella Resources

vogella Training Android and Eclipse Training from the vogella team

Android Tutorial Introduction to Android Programming

GWT Tutorial Program in Java and compile to JavaScript and HTML

Eclipse RCP Tutorial Create native applications in Java

JUnit Tutorial Test your application

Git Tutorial Put everything you have under distributed version control system


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值