Thursday, October 24, 2013

Building Android Apps with Apache Maven

Android Maven
This tutorial describes how to build Android applications with Apache Maven and the "android-maven-plugin".

1. Building Android Applications

1.1. Android SDK and ADT

The Android SDK provides tooling for the command line to create and build Android projects.
The Android Developer Tools (ADT) offer the same functionality for Eclipse. In Eclipse you can manually export Android applications via the Eclipse wizard.
To build and deploy Android application the Android SDK provide tools which are currently based on Apache Ant.
The project lead of the ADT has recently announced that ADT is moving to a Gradle based build system and that the Eclipse tooling is also going to be based on the same build system.
Tooling for building Android Application with Maven are also available. The move of ADT to Gradle makes the support of Maven easier as Gradle uses Maven repositories to manage its dependencies.

1.2. Maintain PATH

Building Android outside Eclipse involves using the command line or shell. You should be familiar with using a shell in case you want to be able to perform this tutorial.
Make sure that the tools and platform-tools folder of the Android SDK installation directory are part of your PATH environment variable.

2. Building Android applications with Maven

The android-maven-plugin plug-in allows to build Android applications via Maven.
The webpage of this maven plug-in is located under: Android-Maven Plug-in .
You only have to install Maven, write a correct pom.xml file and issue the commands to Maven to build, install and run your application.
The following will build your Android application via Maven.
mvn3 clean install 
This will create the application and places the .apk file in the target folder.
If you want to install the application via Maven on your Android device, you can use the following command.
mvn3 android:deploy 
If more then one device is available you can specify the relevant device in your pom.xml. Maven can also start and stop an Android virtual device automatically for you.
You can also start the application via Maven.
mvn3 android:run 

3. Tutorial: Building Android Applications with Maven

Create a new Android project called "de.vogella.android.build.firstmaven". The actual content of the repository is not important as we are only using this project to create a working build for Maven.
Create the following "pom.xml" file in your directory. Make sure that artifactId is set to your project name.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>de.vogella.android.build.firstmaven</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>apk</packaging>
<name>Maven Example</name>

<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>src</sourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.1.1</version>
<extensions>true</extensions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<sdk>
<!-- platform or api level (api level 4 = platform 1.6) -->
<platform>8</platform>
</sdk>
</configuration>
</plugin>
</plugins>
</build>
</project>
Switch to the command line and enter the following command:
mvn3 android:deploy 

4. Move information

For more information see the complete Maven Android Guide from Sonatype: Android Application Development with Maven .
Another quick starting guide is available on the android-maven-plugin project side: Getting Started with Android and Maven

No comments:

Post a Comment