Cómo migrar de Eclipse a IntelliJ IDEA (… y no morir en el intento o ser asesinado por tus compañeros de equipo)

Hace un año empezaba a trabajar como desarrolladora de Android en un nuevo equipo. La mayor parte de mis compañeros utilizaban Eclipse, excepto el lead del equipo. Ahí fue dónde oí hablar de IntelliJ por primera vez y mi curiosidad se despertó. Tenía que probar las maravillas que hablaba de él.

Logo de intelliJ

Logo de intelliJ

Así que me puse manos a la obra y no sin algún que otro problemilla (no sólo técnico), conseguí que todo funcionara a la perfección. Tanto, que ahora no quiero utilizar ningún otro editor. IntelliJ me resulta mucho más rápido que Eclipse, es mucho más cómodo para usar shortcuts (y se aprenden muy fácilmente gracias a un plugin) lo cuál hace que mi trabajo sea mucho más rápido y eficiente, es genial para refactorizar (te hace todo el trabajo sucio sin que tengas que gastar una gota de sudor), tiene un maravilloso autocomplete que te lee la mente y por último, y no menos importante, tiene millones de plugin que se ajustan a cualquier cosa que se te ocurra que puedes necesitar.

La única pega, es que es de pago (la versión Ultimate) pero tiene una versión gratuita Community, que funciona bastante bien aunque soporta menos lenguajes. Si tienes curiosidad, puedes probar la versión Ultimate durante 30 días sin coste alguno (pero no lo hagas, porque la terminarás pagando!).

La otra pega, es que no incluye el MAT o Memory Analizer que incluye Eclipse. Por lo que si te quieres divertir buscando posibles leaks, tendrás que descargarte la versión standalone de aquí.

La razón de sentarme a escribir este post ahora, un año después, es la decisión de Google de empezar a utilizar IntelliJ como el editor preferido para Android. El Android Studio, es una versión de IntelliJ (la 13) que aún está en preview, pero que puedes conseguir en el Early Access Preview de IntelliJ sin ningún problema. Y como yo en su día, seguramente habrá algún desarrollador al que le haya picado la curiosidad y esté comenzando a migrar de Eclipse a IntelliJ. No es un tutorial para hacerlo, existen unos cuantos ya por ahí, sino que es una serie de consejos que a mi me sirvieron en su día y que tras tanto golpearme la cabeza contra muros hicieron que todo funcionara a la perfección. Ahí van!

 

1. Dónde están mis proyectos? Y mi workspace?

En IntelliJ, se utiliza otra estructura para lo que conocemos como proyecto y workspace en Eclipse. Una vez iniciado el editor, la primera pantalla que nos va a mostar es la de elección de proyecto. Si hacemos una analogía con Eclipse, se puede decir, que este será nuestro workspace. En una ventana de IntelliJ, sólo podremos tener un proyecto abierto al mismo tiempo.

Una vez abierto el proyecto, este estará compuesto por módulos (que podrían entenderse como los proyectos en Eclipse). Un módulo puede ser nuestra aplicación, como los fuentes de librerías que incluyamos. O si estamos desarrollando la app aplicando dependency injection, pues sería cada uno de los módulos utilizados por ella, que funcionan de forma independiente.

También podemos crear un módulo con los Unit Tests (la configuración de las librerías de mock y instrumentación darán para otro post…).

Si importas un proyecto desde Eclipse, verás que tendrás que crear un proyecto (será el proyecto principal de tu app) y luego ir importando el resto de dependencias como módulos (por ejemplo, si estás utilizando la API de Facebook, tendrás que incluirla como un módulo).

proyectosintellij

 

2. Ya he importado todos los módulos, pero al ejecutar mi app no encuentra las dependencias, que ha ocurrido?

Bueno, esta es una de las pocas cosas que podría echar de menos de Eclipse. Una vez que tenemos un proyecto o una librería en el mismo path que nuestro proyecto,  no hay que hacer nada (excepto importarlo en código) para que entienda que tiene que utilizarlos para construir nuestra app. Sin embargo, en IntelliJ, tendrás que configurar las dependencias que haya entre los diferentes módulos.

Para ello, puedes modificar la estructura de proyecto o Project Structure (comando+; en Mac OS). Selecciona Module a la izquierda y podrás configurar el orden en que quieres que se compile tu app y podrás añadir las dependencias necesarias.

Dependencias en IntelliJ

Es importante que cuando añadamos un nuevo módulo, abramos su ventana de configuración (Facet Android en el caso de apps de Android) y seleccionemos “Library module” (en el caso de que sea una dependencia de nuestro módulo principal). Esto me llevó unas horas de investigación 😛

 

3. El orden de los factores sí que altera el producto

Cuando configures las dependencias de tu proyecto, ten en cuenta que el orden importa, por lo que ordena las dependencias de la manera que quieras que se compilen. Por ejemplo, cuando configures junit4 para realizar unit tests, tienes que poner primero la librería de tests antes que la libería de Android, ya que Android utiliza junit3 y se configuraría este primero y te daría errores si estás utilizando nuevos métodos o clases no incluidos en esta versión. Esto me llevó otras horitas de diversión…

4. Mantén las librerías ordenadas

En la pantalla de estructura de proyecto, vemos que hay una opción llamada Libraries. Aquí puedes crear un gran paquete que incluya todas las librerías que quieres utilizar (y luego desde la ventana de dependencias sólo tienes que llamar a dicha librería, por que te facilita bastante la vida) o crear pequeños paquetitos de librerías según su cometido (lo cuál hace que tu proyecto quede mejor ordenado y es más fácil reutilizar estos paquetitos si los necesitas para otro módulo).

library

 

5. Shortcuts!!

Me encanta trabajar utilizando sólo el teclado, creo que ir a agarrar el ratón te consume unos preciados segundos que podrías aprovechar codificando o rascandote la cabeza con cara de preocupación. En IntelliJ todo gira entorno a los comandos de teclado.

Mi consejo es que te descargues uno de estos maravillosos wallpapers con todos los comandos de teclado de IntelliJ IDEA, que te servirá a modo de chuleta cuando lo necesites.

Mi segundo consejo es que instales este plugin, que te va repitiendo los shortcuts de cada acción que realices en IntelliJ.

Y el último consejo, pero el más importante de todos es que no te olvides nunca de este comando: shift + comando + A (en Mac OS), ctrl + shift + A (Windows y Linux). Te salvará la vida cuando lo necesites, puesto que abre un buscador de comandos/funciones del editor.

 

6. Por qué todo el mundo me mira mal y he sufrido par de intentos de asesinato?

Como early adopter, muchas veces vas a ver que no todo el mundo estará de acuerdo en utilizar el mismo editor. Esto puede traer ciertos problemas: se pasarán el día diciendo que su editor es mejor y achacarán cada error a que utilizas un editor distinto. No pasa nada, tu ya sabes que estás utilizando la mejor opción posible así que no les hagas caso.

Un problema más imporante es el formatter utilizado para formatear el código. IntelliJ formatea el código de una manera bastante diferente a Eclipse. Lo que cuando trabajas solo no importa, pero cuando estás trabajando en un proyecto en equipo, utilizando algún sistema de repositorio, puede terminar en lo que se conoce como “merge hells”.

Para eso, existe en IntelliJ un plugin que nos permite utilizar el formatter de Eclipse, y lo puedes descargar de aquí. Para todo lo demás, paciencia 😉

Funciona bastante bien pero tiene un pequeño problema: no formatea los resources XML de Android. Pero bueno, al menos te ahorrará más de un disgusto!

 

Y con esto ya termino esta entrada. Seguramente se me ocurrirán más cosillas, así que puede que haya continuación…. chan chaan…

 

Etiquetado con: , , , , , ,
Publicado en: android, desarrollo, intellij

IDECanarias crea una capa de Layar con 24.000 puntos de interés

Como últimamente ando trabajando en proyectos con Layar y con realidad aumentada en general, estoy siguiendo atentamente cualquier noticia que se produzca al respecto. La de hoy, además, me toca muy de cerca, y me encanta que hayan realizado este proyecto, porque en Canarias hacen falta iniciativas como ésta. Además, estando ahora en Bélgica (hasta dentro de poco!), me toca un poco la vena nostálgica.

Esta noticia la he encontrado vía el blog de Grafcan (y vía un RT de @jfrechin). El IDECanarias se ha currado una capa de Layar que incluye puntos de interés en las islas. La información de esta capa se basa en su aplicación callejero. Me imagino que han realizado un webservice que extrae los datos de la misma y los adapta al formato Layar (suposiciones mías). Si quieren ver más imágenes, hagan click aquí.

Aún así, las posibilidades de Layar son muy numerosas, empezando por poder ampliar la información cuando haces click en un POI. Ahora ya sólo les quedaría añadirle algo de 3D, interactividad, audio o video al asunto, que queda muchísimo mejor!

La capa es local (sólo visible si estás en su radio de funcionamiento) yo he podido verla con un pequeño truco pero estoy deseando regresar para poder verla in situ!

Etiquetado con: , , , ,
Publicado en: movil, realidad aumentada

Layar y su nuevo modelo de negocio

Layar

Layar

Vía Mobile Markeging Watch, y gracias a rdiaz, me entero de que Layar ha anunciado el modelo de negocio que va a emplear para monetizar su aplicación.
Van a hacer posible que los desarrolladores que elaboren capas sobre su aplicación puedan venderlas, llevándose por cada capa vendida un 60% del precio total. Por ejemplo, imaginemos que yo como desarrolladora hago una capa de “Guía Turística de la ciudad de Pamplinópolis” dónde ubico modelos en 3D señalando monumentos, museos, en fin, lugares de interés; y además, lugares de ocio, restauración y alojamiento. Una capa bastante completa con información adicional que te permite ampliar la forma de ver el mundo. Por cada usuario que se descargue mi capa, yo obtendré un 60% de su precio en la tienda de Layar.
Los usuarios pueden comprar estas capas adicionales pagando por Paypal desde la propia aplicación de Layar. Ahora, ellos son los que tendrán la última palabra, confirmando si están dispuestos a pagar por esta información adicional y aumentada.

Etiquetado con: , , ,
Publicado en: movil, realidad aumentada

Realidad Aumentada: Carreras de aviones

Vía Microsiervos, encuentro esta noticia sobre una carrera de aviones llamada Rocket Racing League (una mezcla entre videojuegos como NASCAR y Wipeout) propulsados por cohetes.

Lo interesante de la carrera es que utiliza la realidad aumentada para recrear el videojuego. Por un lado, los pilotos ven proyectado en el cristal el circuito que deben seguir. Por otro lado, el público lo ve en una gran pantalla en tiempo real. Es fantástico. Sólo tienen que ver el video que pongo a continuación para confirmar que la realidad aumentada no tiene límites.

No es necesario ser piloto profesional para participar, los jugones también pueden competir contra los pilotos reales a través de un videojuego que incluye un simulador de vuelo. Es increíble cómo se lo han currado!

Publicado en: realidad aumentada

El post que tardé 6 meses en escribir

Llevo ya 6 meses sin escribir en este blog. No puedo culpar a nadie de este hiatus, la culpa ha sido mía, pero es que he tenido muy muy poco tiempo!

Para compensar, pongo al día de lo que quedó pendiente en el último post.
Como ya saben, hablabla de nuestra aplicación DJ’it, que había quedado finalista en el concurso de Google, el Android Developer Challenge 2. Finalmente, quedó en el puesto 11º de la categoría de Lifestyle. Para nosotros fue un gran premio ya de por sí, porque no esperábamos que llegara tan lejos.

En la actualidad, DJ’it ha sido descargada 37.000 veces, con una gran acogida por parte de los usuarios. Estamos deseando sacar una nueva versión con nuevas funciones, pero el tiempo dirá, porque ahora mismo tenemos pocos huecos que podamos dedicar a nuestra querida DJ’it. Sin embargo, como experiencia ha sido algo genial y espero que nos podamos volver a presentar al siguiente ADC2 o directamente, sorprender con nuevas aplicaciones… mmmm… ya veremos!

Y tras esto, decir que espero poder dedicarle algo más de tiempo al blog, porque he visto cosas interesantísimas que me encantaría que supieran y he estado aprendiendo muchísimas cosas que me gustaría mostrar por aquí. No se muevan del ordenador que dentro de poco habrá más (bueno sí, pero solo para ir al baño :P)

Etiquetado con:
Publicado en: reflexiones

DJ’it en la segunda fase del ADC2!!!

Hace escasos minutos, recibíamos este email:

Congratulations! Your application ‘DJ’it’ was selected by Android users as one of the top 20 in the Lifestyle category! We’re excited that you chose to participate in the ADC 2 and wish you luck in the final round as your application is evaluated by users and a panel of judges.

For full information on the challenge, please see our official site: http://code.google.com/android/adc/

Thanks,
ADC 2 Support

¡Estamos nominados! ¡Estamos entre las 20 primeras aplicaciones de Lifestyle! Esto en sí, para mí, ya es suficiente premio. No me lo puedo ni creer!
Nuestro pequeño DJ’it ha gustado! Tocará celebrarlo como se merece 😀

PD: Ya sé que apenas escribo pero es que el tiempo se me va de las manos! Ya vendrán días mejores!

Etiquetado con: , , , ,
Publicado en: movil

Dj’it!

Dj'it!

Dj'it!

Dj’it no es sólo una aplicación para Android que permite utilizar el móvil como si de una mesa de mezclas se tratara, con dos canales de mezcla de pistas (cada una de ellas organizada en su respectivo playlist) más uno adicional de reproducción de samples o bases de percusión propias, que te permite tanto cargar tus propias creaciones, hechas con el compositor del programa, como realizarlas en tiempo real mientras pinchas!

Pero no! No es sólo eso! También permite relacionarte con otros usuarios de DJ’it, dejar anuncios de fiestas en su tablón de anuncios y navegar por el mapa en busca de usuarios que están pinchando en ese mismo momento… así es imposible que te pierdas toda la diversión!

Si te gusta esta aplicación, tendrás que esperar unos meses hasta que la lancemos al Android Market porque queremos añadirle más funcionalidad, peeeeeeero, ya puedes probarla y si te gusta votarla en el Android Developer Challenge 2!

Esta es mi (nuestra) primera aplicación para Android. Ha nacido fruto del equipo S2D, formado por Roberto Díaz (desarrollador), Oscar Socorro (diseñador) y por mí (lo que sea.. bueno desarrolladora también :P). También han colaborado con nosotros Iluminada Armas (redactora) y Ruth Yuste (traductora). Muchas gracias por hacer esto realidad!

Ha sido un mes muy duro, sin apenas salir a la calle, dedicando el poco tiempo que nos queda libre, sin dormir las horas saludables recomendadas por el médico, rechazando planes maravillosos (espero que nuestros amigos no nos odien mucho)… pero ha valido la pena!!

Bienvenida al mundo Dj’it!!

Etiquetado con: , , , , , ,
Publicado en: movil

Android

Logo de Android

Logo de Android

Empecé hace meses a echarle un ojillo al desarrollo para Android, el sistema operativo para móviles de la Open Handset Alliance, el cuál pertenece a Google, pero por problemas de falta de tiempo no había podido sentarme y darle aplicación práctica. Por fín, he podido tener algún hueco hipermegaescondido  y empezar a aprender y, la verdad, es que cada vez me gusta más.

El desarrollo es bastante intuitivo para todos aquellos que hemos tratado con Java, con programación para dispositivos móviles y que hemos manejado XML alguna vez. He de decir que la posibilidad de realizar el diseño de interfaces directamente desde el XML, a lo CSS, me encanta. La gestión de eventos y la comunicación con otras aplicaciones del telefóno móvil también es un proceso bastante sencillo. Resumiendo, es un SDK que se deja querer y mucho.

De todas formas, el cometido de este post no es otro sino el de proporcionar una serie de enlaces y nombres de libros que me están siendo de mucha ayuda, para todo aquel que quiera acercarse al maravilloso mundo del machanguito verde.

El primero de ellos es la página oficial para desarroladores de Android, que se puede visitar aquí:  Android Developers

El segundo, es el grupo oficial de google para desarrolladores: Google Group – Android Developers

Y finalmente, un par de enlaces interesantes para aquellos que quieran usar la lengua de Cervantes:

And.roid.es – Muy útil, es un blog en español sobre Android, que además ofrece una serie de servicios como cursos. Es el punto de referencia para los desarrolladores profesionales de Android. También tienen un grupo en linkedln.

Android-spa – Es una comunidad en español, con noticias de actualidad, foros, etc. Aquí puedes encontrar la respuesta a tus preguntas, y si no la encuentras… pues preguntar!

En cuánto a libros, siempre me gusta acompañar el aprendizaje con la lectura de algún libro relacionado. En estos momentos, yo estoy siguiendo este: Android A Programmers Guide , pero existe una cada vez más prolifera literatura al respecto.

Esto es todo, pero iré editando según vaya encontrando cosas interesantes entre los mil recursos que pululan por la red!

Etiquetado con: , , , , ,
Publicado en: movil

Taller: Marketing de proximidad y herramientas Opensource (GCDS09)

En un intento de copia vil de la entrada de Roberto, voy a colgar aquí los materiales del taller que ofrecimos en el Desktop Summit.

Primero quiero darle muchas gracias a la gente que acudió! Primero por sufrirnos (un sábado por mañana!) y segundo porque me alegra mucho mucho saber que les ha gustado y sobretodo que han aprendido algo. Es una de las sensaciones más gratificantes que se pueden tener!

Segundo, quiero invitarles a que si necesitan cualquier cosa o si tienen alguna duda, quieren consejo o aportar algo (todos estamos eternamente aprendiendo!), no duden en contactar conmigo o con Roberto. Aviso que estamos planteándonos, si nuestro tiempo libre nos lo permite, la idea de abrir algún proyectito opensource por ahí, por si alguien quiere colaborar!

También quiero darle las gracias a los organizadores del Desktop Summit, por seleccionar nuestro taller para que participara y por hacer que las cosas salieran tan bien (a pesar de que tuvieron que hacer malabarismos por culpa de “factores externos”). La verdad es que ha sido una experiencia vivir un evento de este calibre en nuestra pequeña Gran Canaria (si no, no habría podido vivirlo), y espero que se pueda repetir algún día.

Bueno, pues cuelgo aquí las transparencias del taller y en cuánto Roberto suba el código fuente actualizaré. Software libre para todos!!!

Etiquetado con: , , , ,
Publicado en: linux, opensource

Gran Canaria Desktop Summit (+ bonus sorpresa)

Como sabrán los más frikies y geekies, desde el día 3 de julio hasta el día 11 de julio se celebra en Gran Canaria un evento mundial del calibre del Gran Canaria Desktop Summit. Este encuentro está dedicado a las comunidades de escritorios KDE y GNOME, y al mundo opensource en general. Su programa incluye desde keynotes de grandes del movimiento opensource como Richard Stallman (guau!) hasta charlas y talleres de expertos y creadores de aplicaciones para ambos escritorios. Incluso hay un Mobile Day, que no me pienso perder por nada del mundo!

Por otro lado, existe un largo programa de Talleres Locales en español. La temática de estos talleres tiene es sobre utilización o programación sobre aplicaciones opensource, su utilización en las empresas, experiencias, casos de éxito, etc. Roberto y yo habíamos presentado una propuesta para un taller, a través de la oficina de software libre de la ULPGC, sobre la utilización de herramientas y aplicaciones opensource en el marketing de proximidad por bluetooth, pero al llegar la fecha de la confirmación no recibimos respuesta a nuestra propuesta. ¡Cual es mi sorpresa cuando al ir hoy a registrarme me encuentro con esto! ¡Hemos corrido como locos a enviarles un email para que, de ser cierto, empezar a prepararlo todo!

Confirmaré por aquí cuando tenga una respuesta, pero ya saben que están todos invitados. No importa los conocimientos que tengan, la primera sesión es para todos los públicos :) (luego ya nos iremos poniendo frikies en las siguientes sesiones, con la utilización de OpenProximity y la programación de aplicaciones utilizando la api de BlueCove).

Edito: Confirmado que damos el taller :)

Etiquetado con: , , , ,
Publicado en: opensource