Blog

Creating a library .jar file for Android project from command line

January 16, 2014

Creating a library .jar file for Android project from command line

In order to setup automated build system for an Android App projects, it is sometimes necessary to build library .jar files and build other apps dependent on those. I came across a simple solution using Ant with a few lines of commands for this purpose.

Although Android Library Project does not officially support exporting to .jar file as of today, Jan. 16th 2014, it seems there is a demand for creating and distributing a .jar file of a custom library project to be used with Android projects.

Google search results suggest different ways but the basic idea is simple: Create a regular Android Library Project and ADT will create bin/classes.jar automatically and you can simply distribute the .jar file with or without changing the name. In case you want to include some resources in the .jar file, it’s a little bit trickier but there still seems to be a solution.

 

However, when it comes to build automation where only command line sequences are welcome, use of ADT is not really an option. Here is the 1-2-3 of the solution using Ant.

  1. android command creates an Android Library Project
  2. source files can simply be placed under src/ directory of the newly created project
  3. Ant builds the library project and generates classes.jar file

Example: library package is com.example.hellib and the project name is my lib

$ mkdir mylib

$ cd mylib

$ android create lib-project -n hellib -t android-17 -k com.example.hellib -p .

$ mkdir -p src/com/example/hellib

$ vi src/com/example/hellib/Hellib.java
package com.example.hellib;
import android.util.Log;
public class Hellib {
    public Hellib() {
    }
    public void willBeInAJar() {
        Log.d( "Hellib", "will be in a jar file" );
    }
}

$ ant release 

$ mv bin/classes.jar bin/hellib.jar

* android-17 is an android target could be different from yours depending on your SDK installations. check with ‘$ android list targets’  command

* ‘ant release’ command builds the library for release target and creates bin/classes.jar

* classes.jar rename to whatever or use it as it is.

Now, you can distribute the .jar file and the recipients can put this under libs/ directory of an Android Application project.

한국어 버전: Shell 명령에서 안드로이드 라이브러리 .jar파일 만들기

세부 프로젝트가 2개 이상인 안드로이드앱 자동빌드 환경을 구축하려다 보면 라이브러리를 .jar 형태로 묶어서 두개 이상의 앱 프로젝트에 넘겨주는 과정이 필요할때도 있죠. Ant 를 사용하면 몇개 안되는 shell 명령으로 가능하다는걸 이제서야 알게 됐습니다.

안드로이드 라이브러리 프로젝트에서는 .jar로 내보내기(export) 하는걸 안된다고 거듭 강조하고 있지만요, 여전히 많은 분들이 라이브러리 프로젝트 대신에 .jar를 빌드 하고싶어하는것 같습니다.

구글 검색을 좀 해 보면 대동소이한 여러가지 방법을 찾을 수 있는데요, 기본적으로는 그냥 안드로이드 라이브러리 프로젝트를 만든다음에 ADT에서 자동으로 빌드된 다음에 생성되는 bin/classes.jar를 꺼내쓰는 방법입니다. 거기다가 순수 java 코드외에 strings.xml 같은 리소스를 포함하고 싶은경우에는 조금 더 수고를 하면 쉽게 가능한 방법도 있습니다.

하지만, 자동빌드 환경을 구축해야 할떄는 갑자기 ADT같은 GUI를 사용하는것이, 가능한지는 모르겠지만, 썩 달갑지 않지요. 여기 Ant를 이용한 간단한 방법을 소개 합니다. (Shell 명령어를 가정하므로 Windows에서는 cygwin 터미널에서 실행한다고 가정합니다)

  1. ‘android’ 명령을 사용하면 순식간에 안드로이드 라이브러리 프로젝트 템플릿을 만들 수 있습니다.
  2. 여기에 라이브러리에 포함될 자바 코드를 작성해서 넣습니다. (src/ 디렉토리에 아래에 바로 패키지 경로 만들어 .java 파일을 추가하면 됩니다)
  3. ‘ant’ 명령을 사용하면 한방에 bin/classes.jar가 생성됩니다.

예제는 위쪽에 있는것을 참조하세요.

이제 .jar 파일을 안드로이드 앱의 libs 디렉토리에 넣고 앱을 빌드하시면 됩니다.