RSS

Spring Android : Primeros pasos.

27 Feb

Como hemos visto en la anterior entrada, para instalar Spring Android necesitamos gestionar una serie de dependencias externas. Desgraciadamente Android no tiene ningún mecanismo para compilar dependencias externas dentro de un proyecto.

Podríamos añadir las dependencias externas manualmente como ficheros jar e incluirlos en el classpath en Eclipse. Pero manejar dependencias manualmente, como ya sabemos, no es una buena idea (una discusión al respecto). Por lo tanto vamos a desarrollar nuestros proyectos Spring Android incluyendo Maven Android Plugin. Para ello incluiremos un fichero pom.xml que se encargue de gestionar estas dependencias externas. Así vamos a poder arrancar nuestras aplicaciones Android desde línea de comando con Maven ó si lo preferimos tenemos un plugin para Eclipse, STS u otro IDE que nos permite trabajar con Maven en nuestros proyectos Spring Android desde nuestro IDE favorito.

El fichero pom.xml que vamos a incluir en nuestros proyectos tiene un par de cosas que merecen ser explicadas para configurar el Maven Android Plugin.

  • Los proyectos Android son desplegados en el dispositivo como ficheros apk en lugar de jar. Esto se hace indicando apk como packaging en el pom.xml.
apk
  • Además para incluir el plugin Maven Android a nuestros proyecto tendremos que incluir en el elemento build de nuestro pom.xml la siguiente entrada. Podemos ver que añadimos los plugin para Maven Android y Maven Compiler. El SDK de mi proyecto como podemos ver corresponde a la versión 2.1.
<build>

<finalName>${project.artifactId}</finalName>

 <sourceDirectory>src</sourceDirectory>
 <plugins>
 <plugin>
 <groupId>com.jayway.maven.plugins.android.generation2</groupId>
 <artifactId>maven-android-plugin</artifactId>
 <version>2.8.4</version>
 <configuration>
 <sdk>
 <platform>7</platform>
 </sdk>
 <emulator>
<avd>avd_2.1</avd>
</emulator>
<deleteConflictingFiles>true</deleteConflictingFiles>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
</configuration>
<extensions>true</extensions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
</plugins>
</build>

Una vez añadidos los plugins, necesitamos incluir las dependencias externas que añaden la funcionalidad a nuestro RestTemplate para hacer JSON marshalling, XML marshalling ó RSS y Atom feed.

<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>2.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.android</groupId>
<artifactId>spring-android-rest-template</artifactId>
<version>1.0.0.BUILD-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Using Jackson for JSON marshaling -->
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>

<!-- Using Simple for XML marshaling -->
<groupId>org.simpleframework</groupId>
<artifactId>simple-xml</artifactId>
<version>2.4.1</version>
<exclusions>
<exclusion>
<artifactId>stax</artifactId>
<groupId>stax</groupId>
</exclusion>
<exclusion>
<artifactId>stax-api</artifactId>
<groupId>stax</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>

<!-- Using Android ROME for RSS and ATOM feeds -->

<groupId>com.google.code.android-rome-feed-reader</groupId>
<artifactId>android-rome-feed-reader</artifactId>
<version>1.0.0-r2</version>
</dependency>
</dependencies>

<repositories>

<!-- For developing with Android ROME Feed Reader -->

<repository>
<id>android-rome-feed-reader-repository</id>
<name>Android ROME Feed Reader Repository</name>
<url>https://android-rome-feed-reader.googlecode.com/svn/maven2/releases</url>
</repository>

<!-- For testing against latest Spring snapshots -->

<repository>
<id>org.springframework.maven.snapshot</id>
<name>Spring Maven Snapshot Repository</name>
<url>http://maven.springframework.org/snapshot</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>

<!-- For developing against latest Spring milestones -->

<repository>
<id>org.springframework.maven.milestone</id>
<name>Spring Maven Milestone Repository</name>
<url>http://maven.springframework.org/milestone</url>
<snapshots><enabled>false</enabled></snapshots>
</repository>

</repositories>

Finalmente para desplegar aplicaciones con el plugin de Maven Android necesitamos añadir a nuestro PATH la ruta a nuestra carpeta tools y platform-tools que tengamos en nuestra versión del SDK. Hecho esto tenemos todo listo para ejecutar por primera vez nuestra aplicación de Android desde Maven.  Hay varios ejemplos colgados del repositorio de Spring Source para Spring Android. En mi caso he utilizado un pequeño trozo de código que viene como ejemplo básico y que permite buscar un término en Google. Como no me quería complicar mucho la vida de momento he mandado al log el resultado de la búsqueda.

RestTemplate restTemplate = new RestTemplate();
String url = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q={query}";
String result = restTemplate.getForObject(url, String.class, "hop2croft");
Log.d(TAG,result);

Y ahora sólo queda:
1. construir la aplicación:

$ mvn clean install

2. arrancar el emulador con el dispositivo AVD que hayamos incluido en nuestro pom.xml:

$ mvn android:emulator-start

3. desplegar la aplicación en el emulador:

$ mvn android:deploy

4. como en nuestro caso queremos ver el log, lo vamos a arrancar:

$ adb logcat

La salida que produce nuestra aplicación es la siguiente.

02-27 11:14:43.084: DEBUG/MyActivity(215): {"responseData": {"results":[{"GsearchResultClass":"GwebSearch","unescapedUrl":"http://lanyrd.com/2011/spring-io/writeups/","url":"http://lanyrd.com/2011/spring-io/writeups/","visibleUrl":"lanyrd.com","cacheUrl":"http://www.google.com/search?q\u003dcache:1xfPou-ZIakJ:lanyrd.com","title":"Write-ups from Spring I/O 2011, 17th-18th February 2011 | Lanyrd","titleNoFormatting":"Write-ups from Spring I/O 2011, 17th-18th February 2011 | Lanyrd","content":"18 Feb 2011 \u003cb\u003e...\u003c/b\u003e Write-up Spring IO 2011 día 2 « hop2croft\u0026#39;s Blog (\u003cb\u003ehop2croft\u003c/b\u003e.wordpress.com). from   Spring I/O 2011, 17th-18th February 2011. Added 3 days ago \u003cb\u003e...\u003c/b\u003e"},{"GsearchResultClass":"GwebSearch","unescapedUrl":"http://lanyrd.com/2011/spring-io/coverage/","url":"http://lanyrd.com/2011/spring-io/coverage/","visibleUrl":"lanyrd.com","cacheUrl":"http://www.google.com/search?q\u003dcache:Fg3pLG-Gc-YJ:lanyrd.com","title":"Coverage of Spring I/O 2011, 17th-18th February 2011 | Lanyrd","titleNoFormatting":"Coverage of Spring I/O 2011, 17th-18th February 2011 | Lanyrd","content":"18 Feb 2011 \u003cb\u003e...\u003c/b\u003e Write-up Spring IO 2011 día 2 « hop2croft\u0026#39;s Blog (\u003cb\u003ehop2croft\u003c/b\u003e \u003cb\u003e...\u003c/b\u003e"},{"GsearchResultClass":"GwebSearch","unescapedUrl":"http://sourceforge.net/projects/eclipse-ccase/forums/forum/167189","url":"http://sourceforge.net/projects/eclipse-ccase/forums/forum/167189","visibleUrl":"sourceforge.net","cacheUrl":"http://www.google.com/search?q\u003dcache:yYWKrfxd5LAJ:sourceforge.net","title":"SourceForge.net: Clearcase plugin for Eclipse: Topics for Help","titleNoFormatting":"SourceForge.net: Clearcase plugin for Eclipse: Topics for Help","content":"where\u0026#39;s the cc api??? 2, \u003cb\u003ehop2croft\u003c/b\u003e, 2010-10-15 06:33:43 UTC. Monitor Subscribe \u0026middot;   Need a way to create and associate activity \u003cb\u003e...\u003c/b\u003e"},{"GsearchResultClass":"GwebSearch","unescapedUrl":"https://hop2croft.wordpress.com/2011/02/21/spring-io-2011-dia-2/","url":"https://hop2croft.wordpress.com/2011/02/21/spring-io-2011-dia-2/","visibleUrl":"hop2croft.wordpress.com","cacheUrl":"http://www.google.com/search?q\u003dcache:gNiClj8frpsJ:hop2croft.wordpress.com","title":"Spring IO 2011 día 2 « hop2croft\u0026#39;s Blog","titleNoFormatting":"Spring IO 2011 día 2 « hop2croft\u0026#39;s Blog","content":"febrero 21, 2011 por \u003cb\u003ehop2croft\u003c/b\u003e … y ahora seguimos con el segundo día … que   empezo con la keynote In search of the grail of developer productivity – A   Grails \u003cb\u003e...\u003c/b\u003e"}],"cursor":{"pages":[{"start":"0","label":1},{"start":"4","label":2},{"start":"8","label":3},{"start":"12","label":4}],"estimatedResultCount":"16","currentPageIndex":0,"moreResultsUrl":"http://www.google.com/search?oe\u003dutf8\u0026ie\u003dutf8\u0026source\u003duds\u0026start\u003d0\u0026hl\u003den\u0026q\u003dhop2croft"}}, "responseDetails": null, "responseStatus": 200}

Si lo que queremos es lanzar nuestra app Android desde un IDE tipo Eclipse necesitamos instalar el Maven Integration for Android Development Tools que integra Maven Android Plugin, ADT y m2eclipse. Para su instalación recomiendo echarle un ojo a la siguiente dirección. Sólo tienes que instalar los plugins como te dice la guía, activar las dependencias de nuestro proyecto para Maven y lanzar nuestra aplicación.
Si hace tiempo que te has perdido o quieres ver de forma más precisa todo el proceso para añadir Maven a Spring Android te recomiento que leas esta entrada. En ella me he basado para escribir este post.

Espero que os haya servido para acercaros a Spring Android.

NOTAS:

– De momento estoy editando con el editor Web de WordPress. La verdad es que es un poco engorroso y hay cosas que me gustaría corregir, como por ejemplo la identación en los trozos de código que se pegan. Buscaré algún editor que haga todo más fácil pero si hay alguien que me recomiende alguno soy todo oídos.

– Antes de instalar el plugin de Maven Android en un IDE estuve dándole vueltas a cual elegir. Normalmente desarrollo en Android con Eclipse 3.6, pero últimamente he estado haciendo otras cosas con STS. Sin embargo en la página de Eclipse observé que había un IDE especial para desarrollo móvil llamado Eclipse Pulsar. Me decidí a instalarlo y cual fue mi sorpresa al ver qué sólo viene por defecto los frameworks para Blackberry, Motorola y Nokia. ¿Cuál es el sentido de tener un IDE específico para desarrollo móvil si el OS más utilizado actualmente, iOS aparte, no está presente?. Finalmente lo instalé en Eclipse 3.6.

 
4 comentarios

Publicado por en 27 febrero, 2011 en Android

 

Etiquetas: , , , ,

4 Respuestas a “Spring Android : Primeros pasos.

  1. Oscar Careaga

    2 noviembre, 2013 at 10:05 pm

    Hola amigo muy bueno tutorial, ahora te hago una consulta, se puede hacer una integracion Android Spring, o sea mi consulta va , si se puede hacer una aplicacion utilizando Spring y eso utilizar en una aplicacion Android?

    Saludos.

     
    • hop2croft

      4 noviembre, 2013 at 8:05 am

      Hola Oscar,

      me alegro que te gustase el tutorial. La idea de utilizar Spring con Android sería en lo que se basa Spring Android básicamente. En concreto aprovecha toda la parte de Spring MVC para asociar las peticiones sobre una determinada página a un método que es el que se va a encargar de decidir que mostrar.
      Personalmente y aunque Spring me parezca un gran framework, también es verdad que se hace demasiado pesado para aplicaciones móviles y tener que estar pidiendo todo en el lado servidor se hace lento. Han surgido bastantes frameworks del lado cliente para aplicaciones móviles y web como Backbone y Knockout que quizá te merezcan echarles un vistazo.

      Saludos.

       

Responder

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. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: