Bienvenidos a la séptima y última parte de la serie de entradas en el ciclo Creando una aplicación de Android. Si aún no lo has hecho, comienza desde la primera entrada mostrada en el menú inmediatamente superior. Durante las anteriores entradas nos hemos centrado en el desarrollo de la aplicación paso a paso, y hemos llegado a tener la aplicación acabada. En esta entrada vamos a crear el paquete de la aplicación (es decir, el .apk preparado con todo), vamos a crear nuestra cuenta de desarrollador para el Android Market y vamos a publicar la aplicación en él. ¡Comencemos! Importante: esta entrada va a basarse en los códigos creados en las anteriores entradas del ciclo al que pertenece. Tienes disponible pinchando aquí (MD5: 209d4e4393a45dadd15c18bfb22621c1) el proyecto de Eclipse con todo lo hecho hasta ahora, el cual puedes importar a tu Eclipse y comenzar a trabajar.
Preparación
La primera cosa que tenemos que hacer es preparar la aplicación para poder publicarla. Esto implica crear el icono, poner el nombre de la aplicación y quitar todos los restos de trazas de código y debug. Para poder poner el nombre a la aplicación (el que saldrá debajo del icono) y el propio icono, debemos ir al AndroidManifest.xml y localizar la etiqueta <application>, como aquí mostramos:
<application android:icon="@drawable/icon" android:label="@string/app_name">
Aquí estamos diciendo que el nombre de la aplicación aparece en el fichero strings.xml bajo el string llamado app_name, y que el icono de la aplicación está en el directorio drawable. Comprobamos el fichero strings.xml y vemos:
<string name="app_name">Pong</string>
Lo vamos a cambiar por:
<string name="app_name">Pong-vC</string>
La parte del nombrado de la aplicación ya está, ahora vamos con el icono. Es interesante consultar las guías para el diseño de iconos de Android Developers para saber más acerca de los tamaños adecuados y diferentes resoluciones. En nuestro caso comenzamos creando un icono en Photoshop, el cual guardamos con tamaño 72×72 píxeles y usando Guardar para web y dispositivos… marcando PNG-24 y sin ningún metadato (así, entre otras cosas, reducimos el tamaño). El resultado podría ser el siguiente, que es el que usaremos: Lo siguiente que tenemos que hacer es incluirlo en nuestro proyecto. Para ello vamos a nuestra estructura de directorios del proyecto y pegamos el fichero en drawable-hdpi/icon_pong.png. Crearemos una versión de 48×48 píxeles y otra de 36×36 píxeles que guardaremos en drawable-mdpi y drawable-ldpi respectivamente. Importante: ¡el nombre del fichero debe ser el mismo! Como ya no vamos a necesitar los icon.png que están en estos directorios, vamos a eliminarlos. Es importante no incluir cosas innecesarias en nuestras aplicaciones para ahorrar espacio. Al eliminarlos veremos que el AndroidManifest.xml se nos queja. Esto es porque nos resta cambiar la ruta del icono. La etiqueta <application>entonces quedará así:
<application android:icon="@drawable/icon_pong" android:label="@string/app_name">
Ahora vamos a quitar todos los restos de trazas de código y el debug de la aplicación. Debemos quitar, en caso de tenerlo (no en el nuestro, pero quizá sí en futuras aplicaciones) la opción android:debuggable=”true” de la etiqueta <application>. Debemos buscar todas las llamadas a la clase Log, para quitar toda traza que hayamos usado durante el desarrollo. Es también muy importante buscar en nuestros códigos si hemos incluido por alguna razón información privada que no deseemos que se vea, además de todo fichero que no sea necesario del proyecto y posibles ficheros de logging o backup que hayamos usado. Por último es de vital importancia la versión de la aplicación, y sería muy interesante echar un vistazo a la guía sobre versionado de Android Developers. Comenzando por la versión 1.0, por cada actualización que hagamos deberíamos aumentarla. Las dos etiquetas importantes que tenemos que tener en cuenta son android:versionCode y android:versionName en la etiqueta <manifest>. Debemos comprender para qué sirve cada una de las dos:
- versionCode: este atributo es un número entero que típicamente comienza en 1 y que se va aumentando por cada actualización. Representa el orden de la versión. Lo suyo es que, cada vez que hagamos una actualización, aumentemos este número en una unidad, ya sea por una actualización grande o pequeña.
- versionName: este atributo es una cadena de texto que representa la versión tal y como debe ser mostrada a los usuarios. Comenzando típicamente en 1.0 irá aumentando a 1.1, 1.2… Si es una actualización menor, aumentamos el segundo número. Si es una actualización grande aumentaremos el primero (para tener 2.0, luego 2.1…).
Por tanto, nuestra etiqueta <manifest>quedará así:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.vidasconcurrentes.pongvc" android:versionCode="1" android:versionName="1.0">
Firmar la aplicación
La última etapa previa a la publicación será el firmado de ésta. De nuevo, deberíamos consultar la guía sobre el firmado de Android Developers. Comenzamos haciendo click derecho sobre nuestro proyecto. Elegimos Android Tools > Export Signed Application Package. Lo siguiente serán una sucesión de ventanas en las que se nos guiará en el proceso. Lo primero que veremos será lo siguiente: Pulsamos en Next y veremos la siguiente ventana:
Elegimos Create new keystore, y elegimos el lugar con el botón Browse. Lo siguiente es escribir la contraseña que usaremos para el fichero. Recomendamos usar una contraseña fuerte, posiblemente creada con algún generador de contraseñas. Una vez hemos rellenado los campos, damos a Next y vemos la siguiente ventana:
Aquí es donde tenemos que poner toda la información de la firma. Alias debe rellenarse con 8 caracteres como máximo, y es el alias de la clave. La contraseña, por experiencia propia, debe ser la misma que pusimos anteriormente. Lo siguiente es la validez, en años, que va a tener la clave (entre 1 y 1000). Los campos de la parte de abajo no son obligatorios, si bien debemos rellenar al menos uno para poder continuar. Una vez hayamos concluido con esta ventana, pulsamos Next y veremos esta otra:
Aquí elegimos la ruta donde queremos guardar nuestro .apk ya firmado. Una vez hayamos concluido pulsamos en Finish y dejamos que Eclipse trabaje. Una vez haya completado el proceso (dependiendo del tamaño de la aplicación puede resultar un proceso relativamente largo), tendremos nuestro fichero de la clave y nuestro .apk firmado. Para comprobar que efectivamente está todo correcto, podemos guardar dicho .apk en nuestro dispositivo (por ejemplo por medio de USB), y ejecutarlo con un Explorador de Ficheros (primero debemos desinstalarlo si lo tenemos por haber desarrollado en el dispositivo). Si hacemos esto, podremos ver que nuestro dispositivo muestra algo similar a lo siguiente:
Una vez instalada veremos que funciona exactamente igual que cuando lo hacíamos al desarrollar en Eclipse y usar Run as Android Application. ¡Ya estamos listos para publicar nuestra aplicación!
Crear nuestra cuenta de desarrollador del Android Market
Lo siguiente que vamos a hacer será crear nuestra cuenta de desarrollador. Efectuaremos un único pago de 25$ (más o menos 18€) y eso nos permitirá publicar nuestras aplicaciones sin límite en número. Siempre hay un pero, y en este caso es que si queremos llevarnos algún dinero por las aplicaciones, Google se va a quedar con el 30% de lo que cueste la aplicación (este porcentaje puede cambiar si Google así lo desea en un futuro). Para hacer este tutorial lo más completo posible, vamos a ir por todos los pasos. Comenzamos visitando la página de publicación de aplicaciones para el Market. Si no estamos logueados en nuestra cuenta de Google, veremos lo siguiente: Meteremos los datos de nuestra cuenta de Google (la de gmail, para entendernos), y continuamos con la siguiente pantalla:
En ella debemos leer el link que dice Acuerdo de distribución para desarrolladores de Android Market. Una vez hemos rellenado los campos (posteriormente podrán editarse), continuamos con la siguiente pantalla:
Aquí simplemente damos a Continuar. El siguiente paso es poner la información para realizar el pago:
Entiendo que, en caso de ya haber comprado algo con Google Checkout, este paso se omitiría o los campos ya estarían completados. En cualquier caso, rellenamos el formulario (importante fijarse en el https:// de la barra de direcciones), y continuamos al siguiente paso:
En este paso nada más que veremos el resumen de la compra que vamos a hacer. Podemos elegir las opciones que se nos muestran, y luego pulsamos en Realizar pedido ahora. Una vez esté completado veremos lo siguiente, que confirma que nuestra compra se ha realizado correctamente:
En el cuadro amarillo hay un link que dice sitio de desarrolladores de Android Market, en el cual pulsaremos. El siguiente paso consiste en leer el acuerdo de licencia en español y continuar:
Si todo ha ido sin errores (no debería haberlos) veremos que nuestro registro en el Android Market se ha aprobado y estaremos frente a nuestra Consola del desarrollador:
Con esto hemos acabado nuestro registro en el Android Market como desarrolladores.
Publicar nuestra aplicación
Después del registro, la siguiente parte será publicar nuestra aplicación en el Android Market. Para ello pulsamos en el enlace Subir aplicación de la ventana anterior. Veremos lo siguiente: Elegimos la ruta de nuestro .apk firmado, y dejamos que se suba. Una vez subido nos hará un resumen de los datos con el código de versión y el nombre de la versión además de todos los permisos que puedan tener que aceptar los usuarios. La siguiente parte consiste en rellenar los campos (y también los opcionales si así lo deseamos). En la Especificación de detalles, es importante que nos demos cuenta de que nos pide la información en inglés (descripción, título…). Podemos elegir añadir nuevos idiomas y poner la información en cada uno de ellos (incluso cambiar el idioma predeterminado). Es muy importante esta parte, ya que será la que vean los usuarios del Android Market. Dato importante: en caso de que queramos cobrar una cantidad por nuestras aplicaciones, lo primero que tenemos que hacer será configurar una cuenta bancaria que será en la que recibiremos los pagos. Pulsa en el correspondiente enlace en la sección de Precios > ¿Quieres vender aplicaciones? Configura una cuenta de comerciante en Google Checkout. Una vez hayamos completado toda la información (importante también el sitio web y el correo de contacto), procedemos a aceptar los Consentimientos de la parte baja de la web. Finalmente guardamos nuestros progreso pulsando en Guardar en la parte superior derecha de los formularios y comprobamos que tenemos correcto todas las opciones que hemos querido rellenar. En la pestaña Archivos APK tenemos nuestra aplicación, la cual necesitamos Activar. Una vez hecho esto sólo nos resta pulsar en Publicar, en la parte superior derecha. Seremos redirigidos a la siguiente ventana:
Nos restaría comprobar que, efectivamente, nuestra aplicación está realmente publicada y accesible. Se supone que la publicación en el Android Market es instantánea, pero no podremos encontrarla usando la herramienta de búsqueda del market hasta que no haya pasado un tiempo (quizá horas). Veamos las capturas:
Importante: es necesario que probemos que funciona todo correctamente antes de distribuir enlaces a diestro y siniestro. Y es necesario que desinstalemos nuestra versión previa (sea la que usamos diréctamente con Eclipse o desde el .apkfirmado).
Aplicar una actualización
Lo último que vamos a hacer es crear una actualización de nuestra aplicación, la cual aparecerá para todos los usuarios que la tengan instalada y se pedirá su descarga. Para ello modificaremos un trozo del código y aplicaremos todo lo necesario. Vamos a la clase PongGameView y localizamos la siguiente sección de código en el método onTouchEvent():
if(!PongOpciones.getInstance().accelerometerEnabled()) { ....... }
Lo que vamos a hacer es quitar este if y dejar lo que está dentro de él tal cual. Ahora modificaremos nuestro AndroidManifest.xml para que se muestre una versión nueva. Como explicamos, modificaremos los atributos versionCode y versionName, quedando así:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.vidasconcurrentes.pongvc" android:versionCode="2" android:versionName="1.1">
Lo siguiente será volver a generar el .apk firmado. Para ello hacemos click derecho sobre el proyecto y elegimos Android Tools > Export Signed Application Package. En esta ocasión elegiremos el keystore que ya generamos previamente, y pondremos la contraseña que usamos para generarlo. Elegimos el alias que sale del menú desplegable y ponemos la contraseña. Continuamos hasta generar de nuevo el .apk. Ahora volvemos a nuestra Consola del desarrollador, y seleccionamos nuestra aplicación pulsando en el nombre. Ahora vamos a la pestaña Archivos APK, y hacemos click en Subir APK. Elegimos la ruta en la que se encuentra éste y pulsamos en Publicar. Ahora tendremos dos APK subidos, uno de la versión 1.0 y otra de la 1.1, por lo que tenemos que activar la versión 1.1 y desactivar la 1.0 que ya no vale. Pulsamos en Guardar y ya tenemos la versión 1.1 en el Android Market. Sencillo, ¿no? Nuestros usuarios recibirán en sus dispositivos el aviso de que tienen que actualizar la aplicación, pero eso ya no es cosa nuestra.
Con esta entrada hemos llegado al final de nuestro humilde curso de introducción a la programación para dispositivos móviles Android. A lo largo de siete entradas extensas y con explicaciones detalladas hemos aprendido a usar las herramientas necesarias para el desarrollo. Entre otras de las cosas aprendidas hemos visto cómo instalar las herramientas necesarias, cómo crear nuevas Actividades y cómo ejecutarlas a través de Intents, cómo mandar información entre Actividades, cómo usar la vibración o el acelerómetro… y todo ello a través del desarrollo de una pequeña aplicación como es un juego sencillo, que nos ha ayudado a no notar la pesadez de aprender todas estas cosas sin unirlas. Espero sinceramente que hayáis encontrado este curso introductorio lo más interesante posible, y que hayáis aprendido con él tanto como yo aprendí haciéndolo. Un saludo a todos los lectores que habéis seguido el desarrollo y muchas gracias por dedicarle el tiempo que requiere. ¡Que tengáis buen desarrollo de vuestras propias aplicaciones! Podéis visitar el Android Market y descargar nuestra aplicación pulsando aquí. También podéis ver cómo habrá quedado la aplicación:
http://www.youtube.com/watch?v=d-eoDwBGOGY
EDITADO: El equipo de Android Market ha decidido a fecha 20-09-2011 retirar dicha aplicación por violación de las políticas de contenido, a pesar de que nunca cobramos por dicha aplicación ni obtuvimos ganancias por publicidad ni negamos que Atari fuera la depositaria de los derechos de autor. Por este motivo hemos decidido alojar la aplicación en nuestro propio servidor para que pueda seguir descargándose pulsando aquí (MD5: 039bf32bfaa8c64a6112bc364d456aa0).
Gracias a todos por vuestra comprensión y apoyo.