Tip Android #18: Proyectos Android con Maven 3

18/04/2013
android tip

Aunque utilizar Eclipse+ADT sea prácticamente un estándar da facto en el desarrollo Android, cada vez son más lo programadores que se decantan por otras alternativas como IntelliJ. Si trabajamos en una app en un equipo de trabajo, utilizar Maven en lugar de trabajar directamente con Eclipse tiene dos grandes ventajas:

  • Cada programador puede elegir su entorno de desarrollo pero todos usarán las mismas dependencias.
  • Se pueden automatizar tareas desde la línea de comandos. Esto permitiría, por ejemplo, definir tareas en Jenkins o Bamboo para aplicaciones Android.

A continuación se muestra como ejemplo para que sirva de plantilla el pom que he creado para mi demo Android Dashboad UI y que incluye como dependencia la popular ActionBarSherlock lo que ha obligado a incluir en el pom el repositorio con la misma. Un par de observaciones:

  • Es imprescindible usar Maven 3 debido a los plugins utilizados. Este pom NO FUNCIONA con Maven 2.
  • Tenemos que tener descargado en el SDK la librería de compatibilidad porque es usada por la ActionBar Sherlock.

Lo más destacable del pom es que hay que indicar dónde está instalada la SDK de Android así como la versión de la API con la que se hará la compilación.

<?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.danielme.blog.demo</groupId>
	<artifactId>Dashboard-UI</artifactId>
	<version>1.0</version>
	<packaging>apk</packaging>
	<name>DashboardUI</name>
	<description>DashboardUI Demo</description>
	<inceptionYear>2013</inceptionYear>

	<licenses>
		<license>
			<name>GNU GENERAL PUBLIC LICENSE, Version 3.0</name>
			<url>http://www.gnu.org/licenses/gpl.html</url>
		</license>
	</licenses>

	<scm>
		<url>https://github.com/danielme-com/Android-Dashboard-Ui-Demo</url>
	</scm>

	<organization>
		<name>danielme.com</name>
		<url>http://danielme.com</url>
	</organization>

	<developers>
		<developer>
			<id>danielme.com</id>
			<name>Daniel Medina</name>
			<email>danielme_com@yahoo.com</email>
			<roles>
				<role>designer</role>
				<role>developer</role>
			</roles>
		</developer>
		
	</developers>

	<properties>
		<!-- directorio en el que está instalado la sdk de Android -->
		<android.sdk>/home/danideveloper/android/android-sdk-linux</android.sdk>
		<!-- API de android con la que se compila -->
		<sdk.version>17</sdk.version>
		<java.version>1.6</java.version>
	</properties>


	<!-- repositorio para las famosas librerias de Jake Wharton -->
	<repositories>
		<repository>
			<id>jakewharton</id>
			<url>http://r.jakewharton.com/maven/release/</url>
		</repository>
	</repositories>

	<build>
		<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>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.0</version>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<plugin>
				<groupId>com.jayway.maven.plugins.android.generation2</groupId>
				<artifactId>android-maven-plugin</artifactId>
				<version>3.4.0</version>
				<configuration>
					<sdk>
						<path>${android.sdk}</path>
						<platform>${sdk.version}</platform>
					</sdk>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<dependencies>

		<dependency>
			<groupId>com.google.android</groupId>
			<artifactId>android</artifactId>
			<version>4.1.1.4</version>
			<scope>provided</scope>
		</dependency>

		<!-- dependencia para ActionBar Sherlock -->
		<dependency>
			<groupId>com.actionbarsherlock</groupId>
			<artifactId>actionbarsherlock</artifactId>
			<version>4.2.0</version>
			<type>apklib</type>
		</dependency>
	</dependencies>

</project>

Los comando básicos que usaremos son:

  • mvn clean package : crea el .apk (sin firmar) en el subdirectorio target del proyecto.
  • mvn android:deploy : instala la aplicación en todos los AVD y/o dispositivos físicos activos. Si no hay ninguno da error. Tened en cuenta que la aplicación simplemente queda instalada pero no se ejecuta tal y como sucede cuando la lanzamos desde Eclipse.
<< TIPS ANDROID

2 comentarios sobre “Tip Android #18: Proyectos Android con Maven 3

  1. gracias por el consejo. A lo mejor me animo a probarlo de nuevo

    yo intenté usar maven+android hace tiempo (un año mas o menos) pero con malos resultados, no hay (o había entonces) una buena integración Eclipse+Android+Maven.
    No compilaban los proyectos o lo hacían pero no funcionaban. Era un dolor y abandoné.

    Lo que si he leido por ahí algún desarrollador que lo utiliza con IntelliJ y que en ese caso funciona muy bien.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.