02 noviembre 2011

Android - Firmando una aplicación para subir al Android Market

Para firmar una aplicación es necesario exportar la aplicación con Eclipse, pero sin firmarla con el certificado de debug. Para esto, pulsamos con el botón derecho en el proyecto y seleccionamos AndroidTools > Expor Unsigned Application Package. Ahora, basta determinar la ubicación en la que nuestro archivo APK será copiado en la PC.

Para continuar, digamos que nuestro archivo se llama enjoyit.apk. De este modo, el siguiente paso es firmar la aplicación con la llave privada que hemos generado en el post anterior, esta operación se lleva a cabo con el comando jarsigner, también disponible en el JDK.

Antes de firmar la aplicación verificaremos que la misma aun no está firmada; esto se realiza con la siguiente sentencia:
jarsigner.exe -verify enjoyeat.apk
Nos deberá aparecer un mensaje como el que listo a continuación:
jar is unsigned (signatures missing or not parsable)
Habiéndonos asegurado que el apk no está firmado, ejecutaremos la siguiente sentencia para realizar el firmado.
jarsigner -verbose -keystore nombre_key_store.keystore enjoyit.apk alias_key_store
A continuación, nos pedirá ingresar la contraseña con la que creamos la llave privada. Una vez finalizado el proceso de firmado, volveremos a verificar si el APK efectivamente ha sido firmado mediante la sentencia:
jarsigner.exe -verify enjoyeat.apk
Deberá aparecernos el mensaje:
jar verified.

Android - Obtener un certificado digital para firmar nuestra aplicación

Para instalar una aplicación en un equipo real es necesario firmarla con un certificado digital. Para instalar la aplicación en un emulador, esto también es necesario, sin embargo, todo lo hace automáticamente el eclipse.

Una buena noticia es que nuestro certificado digital no necesitar estar firmado por una CA (Autoridad Certificadora), y un certificado digital creado por nosotros mismos (autofirmado) es suficiente.

Necesitamos obtener una llave privada para firmar nuestro certificado.

Para generar una llave privada podemos utilizar la herramienta keytool, que está disponible en el JDK. Para eso, vamos a emplear la siguiente sentencia:

keytool -genkey -v -keystore nombre_key_store.keystore -alias alias_del_key_store -keyalg RSA -validity 10000
Escriba la contraseña del almacén de claves:
Volver a escribir la contraseña nueva:
┐Cuáles son su nombre y su apellido?
  [Unknown]:  Armando Picon
┐Cuál es el nombre de su unidad de organización?
  [Unknown]:  android
┐Cuál es el nombre de su organización?
  [Unknown]:  limagtug
┐Cuál es el nombre de su ciudad o localidad?
  [Unknown]:  Lima
┐Cuál es el nombre de su estado o provincia?
  [Unknown]:  Lima
┐Cuál es el c¾digo de país de dos letras de la unidad?
  [Unknown]:  PE
┐Es correcto CN=Armando Picon, OU=android, O=limagtug, L=Lima, ST=Lima, C=PE?
  [no]:  si
Generando par de claves RSA de 1.024 bits para certificado autofirmado (SHA1 with RSA) con una validez de 10.000 días
        para: CN=Armando Picon, OU=android, O=limagtug, L=Lima, ST=Lima, C=PE
Escriba la contrase±a clave para
        (INTRO si es la misma contraseña que la del almacén de claves):
Volver a escribir la contraseña nueva:
[Almacenando nombre_key_store.keystore]

Esta sentencia creará el archivo nombre_key_store.keystore con el alias alias_key_store.

Android - Como generar API Key de Google Maps para desarrollo

Hace unos meses un amigo publicó un post sobre el Uso de Google Maps API en Android en el blog de Lima GTUG.

En el primer punto nos indica obtener el api key de desarrollo y quería agregar algo más de detalle respecto a cómo obtener este dato.

1. Necesitamos generar un certificate's MD5 fingerprint (o huella digital de certificado MD5), empleando la herramienta keytool que viene con el Java SDK y que no forma parte del Android SDK. Para ello ejecutamos la siguiente sentencia:

keytool.exe -list -alias androiddebugkey -keystore c:\Users\\.android\debug.keystore -storepass android -keypass android

La respuesta que recibiremos será similar a la que pongo a continuación:

androiddebugkey, 29-sep-2011, PrivateKeyEntry,
Huella digital de certificado (MD5): 8D:70:55:75:8A:F8:62:53:54:62:A2:74:75:64:32:77 

2. Ya habiendo generado el dato anterior, iremos a la página: http://code.google.com/android/maps-api-signup.html, he ingresamos el dato generado.

Agregamos el dato en el campo "My certificate's MD5 fingerprinter".

A continuación, aceptamos los términos y condiciones, y finalmente, pulsamos en Generate API Key. La pantalla que aparecerá nos mostrará el API Key generado, la huella digital del certificado y un ejemplo del uso de este key en nuestro layout.

En la siguiente pantalla no aparecerá un resumen con el API Key generado,
la huella digital del certificado y un ejemplo de su uso en un layout.

De ahora en adelante, para hacer uso de Google Maps en nuestros proyectos de Android ya sabemos lo que requerimos.