5 de noviembre de 2013

Configurar Sonar para que use MySQL

Sonar viene con una base de datos “incrustada”, en la que guarda el historial de análisis de nuestros proyectos. Sin embargo, es posible que prefiramos emplear un servidor de bases de datos propio que tengamos, algo fácil de hacer si sabes cómo. Vamos a ver cómo configurar sonar para que descargue los datos en un servidor MySQL local.

Sigue leyendo

Etiquetas: ,
23 de septiembre de 2013

Integración Contínua IV – Testflight

Testflight

Testflight es un servicio web que nos permite la distribución de compilaciones de aplicaciones móviles. Hasta ahora, cuando desarrollamos apps, la forma de lograr que nuestros betatesters tuvieran acceso a ella era a través del correo, ya fuera adjuntándola o bien enlazando a un servidor dónde lo tuvieramos almacenado. Con testflight, una vez registrados y configurada una lista de distribución con los betatesters que la han de recibir, sólo tenemos que subir la compilación y notificar a nuestros testers para que se la descarguen y la prueben.

Testflight permite saber cuáles de los testers tienen la app instalada, qué dispositivos ha registrado cada uno… Incluso trae un sdk para poder tener un seguimiento de los errores que se den en el uso de la app, mas completo que el ACRA que ya vimos.

Sigue leyendo

18 de septiembre de 2013

Integración Contínua III – Jenkins

Jenkins

Jenkins es una aplicación que monitoriza las ejecuciones de tareas repetitivas, tales como compilar un proyecto software o tareas ejecutadas por cron. Jenkins ofrece un sistema de Integración Contínua de fácil uso, permitiendo a los desarrolladores integrad los cambios al proyecto y facilitando que el usuario obtenga una compilación fresca. La compilación automatizada y continua aumenta la productividad.

Jenkins es una aplicación web java, por lo que para su ejecución precisaremos de un servidor apache-tomcat. La interfaz de jenkins, como la de sonar, se ve en el navegador.

Sigue leyendo

18 de septiembre de 2013

Integración Contínua II – Sonar

Sonar

Sonar se define a sí mismo en su página web como “SonarQube is an open platform to manage code quality. As such, it covers the 7 axes of code quality.”. En castellano sencillo, viene a decir que es una plataforma abierta para gestionar la calidad del código. Cuando terminemos nuestra instalación de Sonar, podremos con un sencillo comando de Terminal ejecutar un análisis de calidad de nuestro código cuyos resultados veremos después en el navegador.

Sigue leyendo

18 de septiembre de 2013

Integración Contínua I – Gradle

Introducción

Podemos leer en Wikipedia que la integración continua es un modelo informático propuesto inicialmente por Martin Fowler que consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes. Entendemos por integración la compilación y ejecución de tests de todo un proyecto.

El proceso suele ser, cada cierto tiempo (horas), descargarse las fuentes desde el gestor de versiones compilarlo, ejecutar tests y generar informes.

Yo uso git como gestor de versiones, guardando el código en github.com, como ya sabéis. La herramienta de compilación por defecto en Eclipse es ant, pero dado que Google ha marcado el camino hacia Gradle, optaremos por usarlo también nosotros. Sonar es una herramienta que analiza nuestro código y nos informa sobre código duplicado, estándares de codificación, pruebas unitarias, cobertura de código, complejidad ciclomática, posible errores, comentarios y diseño del software. Con el servicio testflight podremos subir nuestra apk para que un grupo de testers (a los que habremos invitado a nuestro “equipo”) puedan ponerla a prueba. Y para que no sea una carga tener que ir usando tantas herramientas, jenkins nos permite crear tareas para realizarlas secuencialmente y, si queremos, programarlas para que se ejecuten periódicamente.

En esta serie de artículos, explicaré cómo instalar las herramientas y configurar los servicios en Ubuntu (linux), que es el sistema operativo con el que trabajo. Los usuarios de Windows quizá tengan que seguir algún paso diferente en lo tocante a la instalación y temas de variables de entorno, pero la configuración y el uso debería ser el mismo.

Sigue leyendo

1 de abril de 2013

Actualizando los recursos de geografía española

Quizá recordéis este post en el que mostré esta pequeña “librería” (por llamarla algo) con la que pretendía facilitar el trabajo relacionado con la geografía española en Android. Unos recursos que casaban Regiones/CCAA con Provincias y a éstas con sus municipios. Pues bien, a base de tener que usarlo, me di cuenta que podría estar mejor si pudiera encapsular todo el asunto en un objeto que me mostrara los selectores y me devolviera los valores seleccionados.

Fragment selector

Así que me puse a trabajar con un FragmentDialog. En él figuran los tres selectores y, como hasta ahora, cuando eliges Región se te muestran sus Provincias y al elegir una Provincia se te muestran sus municipios. Con todo elegido, se pulsa en “listo” y se reciben los valores de los tres campos.

El Fragment tiene que recibir un Listener para poder hacer la transferencia de datos. Aparte de eso, su uso es tan sencillo como esto:

Así se instancia y se muestra:

GeographySelector gs = new GeographySelector(this);
			gs.setOnGeograpySelectedListener(this);
			FragmentManager fm = getSupportFragmentManager();
			gs.show(fm, "geogTest");

Y así es como se reciben los datos. En este caso he optado por mostrarlos en un Toast ya que es una prueba.Toast con datos elegidos

@Override
	public void onGeographySelected(Map<String, String> hm) {
		Toast.makeText(this,
				"región: " + hm.get(GeographySpain.REGION)
				+ "\n" +
				"provincia: " + hm.get(GeographySpain.PROVINCIA)
				+ "\n" +
				"municipio: " + hm.get(GeographySpain.MUNICIPIO)
				, Toast.LENGTH_LONG).show();

	}

En la captura se muestra que recibes exactamente lo que hubiera seleccionado, ya sea la etiqueta (Región), el mensaje de “aún tiene que elegir de la categoría superior o el valor en sí mismo. Esto es así para permitir a cada uno personalizar la ausencia de selección. Igual quieres que lo tenga todo (en cuyo caso volverías a ponerle el diálogo por delante si recibieras los datos de no-selección) o igual se trata de un formulario opcional. Así el control lo tiene quien lo use.

El código está en el repositorio, el proyecto está configurado como “isLibrary”, de modo que sólo se tiene que añadir a nuestro proyecto como referencia.

19 de enero de 2013

Integrando Google Drive en nuestras apps (I) Preparación y permisos

Cualquier dueño de un dispositivo Android con acceso a Google Play tiene forzosamente una cuenta de google activa. Toda cuenta de google activa tiene acceso a los servicios de Google Drive: almacenamiento, documentos, etc. Es por ello que me pareció particularmente interesante acceder desde una app a dichos recursos. Debido a la variedad de servicios que ofrece, haré de esto una serie de artículos. Investigué esta página (gracias @spcoder, porque yo había encontrado tropocientas diferentes pero no ésta) y di con un howto para crear una app sencillita con la que tomar fotos y guardarlas en el espacio de almacenamiento de Google Drive. Tras sufrir y corregir los errores que me encontré, pensé que sería una buena idea compilarlo todo en un post. Sin embargo, y para no arrollar con demasiadas cosas a la vez, dedicaremos este artículo principalmente a la preparación necesaria para que tu app pueda acceder a los servicios de Google Drive. Sigue leyendo

17 de enero de 2013

Pestañas, Fragments y Carga Asíncrona de Imágenes Remotas

appbar-sherlock-demo-2-2-1Desde la aparición de Android 3.0, el diseño de las apps ha cambiado mucho. Antes ya existían las pestañas, pero no quedaban ni remotamente igual de bien (visualmente) de lo que quedan las que se integran en la actionbar, esa barra superior que incluyen las apps diseñadas a partir de 3.0. Sin embargo, no es necesario excluir a todos los dispositivos que no tengan esa versión de Android. Los que tengan 2.1 en adelante pueden aprovecharse de estas características si programas usando una librería externa: La Action Bar Sherlock. Sigue leyendo

17 de diciembre de 2012

Regiones, provincias y municipios de España para Android

Imagen

Para una app que tengo en mente necesitaba la lista de municipios, organizados por provincia, de toda España. Es fácil encontrarla en sql para bases de datos, pero unos datos que no van a sufrir cambio alguno no me justifican usar bbdd.

Mi idea era crear un xml en values con todas las regiones, provincias y municipios en forma de string-arrays bien organizados. Así, si quiero hacer una traducción de la app a, por ejemplo, catalán o gallego, puedo usar los nombres catalanes o gallegos de regiones, provincias y municipios con sólo crear una carpeta values con el sufijo adecuado. Sigue leyendo