(5/5) Publicación en AppStore (Google Play) paso a paso.
Aquí comenzamos la que será la última entrada de esta serie, completando el "ciclo de vida" de este desarrollo, con la publicación de la aplicación en la “tienda” de Google (Google Play). Tal vez para el ejemplo que estamos tratando no sea el “final lógico”, pues recordemos que trabajamos sobre el supuesto de que la aplicación es para una empresa. En ese caso la distribución podría ser de forma “interna” y no tendría sentido publicarla para todos los usuarios de Google Play. Pero me váis a permitir que en este caso me tome esta “licencia” y aprovecharé así esta aplicación para documentar este último paso.
Recordemos lo que hemos visto hasta ahora, y aprovecho para actualizar los links en el resto de las entradas.
Contenido
“ROADMAP” DE LAS ENTRADAS
- (1/5) Introducción al problema y solución propuesta.
- (2/5) Generación del Webservice en PHP.
- (3/5) Generación de un cliente de Escritorio en Delphi.
- (4/5) Generación del cliente iOS/Android (código compartido)
- (5/5) Publicación en AppStore (Google Play) paso a paso.
Hay una serie de pasos que necesitaremos completar, antes de poder publicar nuestra aplicación. En las pruebas normales del día a día tal vez no sean todos necesarios, pero una vez que vamos a publicar la aplicación deberíamos completarlos.
ICONO DE APLICACIÓN
Una vez seleccionamos en el "Target Platform" que la aplicación va a ser para Android, en las opciones del proyecto (Aplicación) debemos rellenar las diferentes imágenes para la aplicación (lo que en las aplicaciones VCL era el icono de la aplicación). Además también podemos seleccionar las orientaciones "permitidas".
Todas las opciones de la aplicación están explicadas en este apartado de la docwiki de embarcadero.
PERMISOS DE USUARIO
Igualmente, antes de publicar la aplicación tenemos que tener claros qué permisos necesita; Estos dependerán de las necesidades de la aplicación respeto al terminal y a los servicios que nos ofrece (acceso a sensores, comunicaciones, acceso al terminal, storage,…). Hay infinidad de ellos y deberéis realizar la asignación correcta de permisos desde la configuración (pestaña User Permissions).
Hay algunos (los más habituales) que vienen activados por defecto.
- Access coarse location
- Access fine location
- Call phone
- Camera
- Internet
- Read calendar
- Read external storage
- Write calendar
- Write external storage
- Read phone state
Una explicación más extensa de los permisos de aplicación, tanto los básicos como los avanzados, así de cómo asignarlos estás explicados aquí.
NOTA: Aunque en los permisos de la aplicación está marcado el acceso a Internet (es uno de los que viene prefijado por defecto) me he encontrado que a la hora de generar la aplicación y probarla en un dispositivo Android no tenía permisos para acceder a la red; Después de revisar el fichero de configuración, he tenido que añadir manualmente la siguiente línea para dar permiso:
<uses-permission android:name="android.permission.INTERNET"/>
El fichero, después de añadir la línea ha quedado como en la imagen inferior.
CREAR UN KEYSTORE Y UN CERTIFICADO
Para poder publicar nuestra aplicación, necesitamos que esté firmada mediante un certificado. Delphi facilita el trabajo de obtener la clave y almacenarla (en un "KeyStore"). Un poco más abajo tenéis los pasos necesarios para acceder al asistente. Antes de eso vamos a explicar algo sobre los certificados que utilizamos para realizar la firma.
TIPO DE FIRMA
Al generar una firma para nuestras aplicaciones (inicio del Wizard) lo primero que se nos pregunta es de qué forma queremos firmar nuestra aplicación, dependiendo del “Build Type” que queramos hacer. Se hace una diferencia entre si estamos en pruebas (Debug) o si estamos generando una versión final o definitiva. Si estamos realizando pruebas, podemos usar “Tipo debug”. En este caso, se nos solicitan muchos menos datos (en realidad desde el asistente ninguno), de forma que la generación es mucho más sencilla.
Al generar una “clave de Debug” se le asignan unos valores fijos. Por defecto las claves que se generan de esta forma expiran a los 365 días.
NOTA: No se puede distribuir una aplicación firmada con una clave para Debug.
Para generar un certificado para poder distribuir nuestra aplicación en la tienda de Google, necesitaremos generar primero un fichero donde almacenar las claves (Keystore) y a partir de ahí añadirle un certificado. Para ello el asistente nos solicitará una serie de datos.
UTILIZACIÓN DEL ASISTENTE
La primera vez que lanzamos el asistente para generar una clave deberemos crear el Fichero para almacenar las claves. Para ello utilizaremos el botón de “New KeyStore”.
Nos solicitará el lugar donde crear el fichero (atención a la ubicación en sistemas Windows Vista y posteriorres para no tener problemas con los permisos a la hora de genararlo). Además de crear el fichero que almacenará los certificados, se nos solicitarán los datos para generar el primero de ellos (Alias=certificado). La pantalla es similar a esta:
Si completamos los datos correctamente (no introduzcáis ESPACIO en el Alias) y se genera sin problemas, obtendremos un mensaje como este:
Con esto ya tendremos creado nuestro "Almacén de claves" (KeyStore) y la primera clave para publicar aplicaciones (Alias).
Podemos generar claves diferentes para nuestras aplicaciones, Pero es imprescindible que todas las versiones de una aplicación (inicial y actualizaciones) estén firmadas con la misma clave, de otra forma serán rechazadas a la hora de publicarlas en Google Play.
PASO FINAL: DEPLOYING
Una vez que ya tenemos todo el entorno configurado, para generar la aplicación en “Google Play” (en el caso de Android), debemos asegurarnos de que hemos seleccionado “Release” en nuestra “Build configuraction” y de que seleccionamos como “Target Platform”, Android y la “Application Store” como destino final.
Deberemos seleccionar también en la configuración del proyecto, la key o certificado con el que vamos a firmar la aplicación (uno de los que hemos creado anteriormente y el mismo para las diferentes versiones y updates que generemos).
Si compilamos con esta configuración,veremos que se nos genera el proyecto en una Carpeta \Android\release, en lugar de la habitual \Android\debug.
Lo siguiente es acceder a la opción de menú Project/Deployment y pulsar sobre el botón de Deploy. Este paso es el que realmente nos genera el fichero APK, que posteriormente servirá para instalar la aplicación (sea desde un terminal) o subiéndolo a la tienda de aplicaciones.
CUENTA DE DESARROLLADOR
Para poder publicar aplicaciones en la tienda de Google, sean gratuítas o de pago hay que crear una cuenta de Desarrollador, aceptar las condiciones del acuerdo y pagar 25$ (este pago no se deberá realizar más). Podéis acceder desde esta dirección, haciendo un Login con una cuenta de Google.
Las condiciones del acuerdo las podéis leer en el link anterior o desde aquí.
PUBLICACIÓN DE LA APLICACIÓN
Una vez que tenemos creada nuestra cuenta, ya podemos iniciar los pasos para publicar la aplicación. A la derecha os coloco una imagen de los diferentes bloques/operaciones en los que se divide la publicación. No necesariamente hay que rellenarlos todos, dependerá del tipo de aplicación. Por ejemplo, para el caso de las aplicaciones gratuitas, la parte referente a precio y distribución queda vacía.
Lo primero que se nos solicita, es que subamos el APK de nuestra aplicación. Una vez que hemos realizado el "Deploy" desde el IDE de Delphi, el fichero generado se encuentra en la carpeta \Android\release, como hemos comentado antes. También tenemos que seleccionar el idioma de la aplicación.
NOTA: Hay que decir que la compilación debe realizarse según los pasos anteriores, ya que Google no dejará subir ninguna aplicación que no esté firmada correctamente o que esté compilada "para Debug".
FICHA DE LA APLICACIÓN
Dentro de la ficha de la aplicación deberemos rellenar datos como la descripción, texto promocional, cambios recientes, la versión de la aplicación, categorización de la aplicación (tipo, categoría y clasificación de contenido), datos de contacto de quien la distribuye y diferentes imágenes (diferentes tamaños pensados para móviles, tables,…) para mostrar en la "tienda". También hay posibilidad de adjuntar un vídeo directamente desde youtube.
Una vez completados los datos mínimos podemos "publicar" la aplicación y en poco tiempo estará disponible.
A continuación os pongo la imagen completa con todos los campos de la ficha para la aplicación que he publicado, así os hacéis una idea más clara de todos los campos.
Desde la "Consola de desarrollador" además de gestionar las aplicaciones, se ofrecen muchos recursos para facilitar el trabajo a los desarolladores.
- Estadísticas de la aplicación; Datos sobre las descargas de la aplicación y los dispositivos en los que se ha instalado.
- Valoraciones y opiniones. Todo lo referente a la información de feedback que los usuarios han dado.
- Errores y ANRs; Información sobre los fallos y las "Application Not Responding" detectados en la aplicación.
- Y por último un apartado de Sugerencias de Optimización.
Si todo ha ido de forma correcta, al cabo de unas hora (eso al menos es lo que me ha tardado a mi) vuestra aplicación aparecerá publicada en la tienda y estará accesible al resto de usuarios.
La aplicación que he utilizado para las entradas anteriores y para ilustrar los pasos que hemos visto en esta, la podéis descargar desde este enlace de Google play o buscando "Agenda Test Service".
Hasta aquí esta serie. Espero que en general os haya sido útil.
Me he dejado cosas en el tintero, y a medida que las he ido escribiendo y publicando me han surgido temas relacionados que no han tenido cabida en las entradas, así que en breve publicaré un "apéndice" con una recopilación de estos elementos.
Como siempre comentarios, sugerencias, críticas,… serán bienvenidas.
Un saludo y hasta la próxima.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Espléndido y estupendo.
Gracias por el gran aporte
Excelente aporte Germán, muy bien redactado y por demás interesante.
Saludos.
¡Excelente!, como todos tus aportes :).
Excelente. Me quito el sombrero.
Gracias a todos por pasaros por este espacio.
Un saludo.
Hola muy buenas, he tenido un problema con la empresa que contrate para desarrollarme la Apk ya que la subieron y firmaron con su firma y ahora al cambiarla de servidor me exijen esa firma para poder subirla en el otro servidor. La empresa no me da la firma por seguridad hacia sus otras APPs y necesito subirla con el mismo nombre, como puedo hacer que me den de baja una para subirla con el mismo nombre pero con otra firma?
@Char
Hola Char.
No acabo de entender a lo que te refieres con… «al cambiarla de servidor».
Por una parte es lógico que la empresa no te ofrezca la firma, pues es el certificado con el que ellos pueden haber generado otras aplicaciones.
Si ellos han subido una aplicación no deben tener mayor problema para eliminarla, en todo caso eso es lo que deberías solicitarles.
De todas formas, aunque subas la nueva aplicación con el mismo nombre, a efectos prácticos será una diferente, ya que la firma no será la misma.
Tal y como he comentado, una aplicación y todas sus actualizaciones deben subirse con la misma firma.
Gracias Neftalí por tan valiosa información, me ha servido para publicar mi primera aplicación Android.
Master, ya nos conocemos y esta vez te escribo por aca en vez de hacerlo en forma Privada. Soy Luis Roldan de Argentina, y gracias a tu detallada informacion , pude publicar mi primer aplicacion de Android. De la misma forma que te ocurrio a ti, cuando compilo el release, se me deshabilita el permiso de internet, tanto hice que logre ya casi a las 4 de la madrugada obtener un dpk que me acepte Goolge, la forma fue poner el archivo AndroidManifest.xml en solo lectura, pero ahora no lo pude volver a repetri, pues si lo hago asi el compilado se enoja y no me deja terminar. En definitiva como salvo el bug que no me deshabilite internet, yaque la aplicacion que hice la necesita….
Gracias y espero tu respuesta
Hola Luis.
Puedes probar a modificar el XML y posteriormente realizar el «Deployment» (menú project) sin volver a compilar. Sólo el deployment para que genere la aplicación y no el XML.
Yo no tuve que ponerlo en sólo-lectura.
Un saludo.
Gracias por tus artículos Neftalí, se que este es un artículo bastante antiguo, pero creo que sería interesante completarlo detallando como incorporar al programa la opción que da google, tanto para aplicaciones pagas como gratuitas, de las licencias de aplicaciones.
Por más que he buscado por internet no he conseguido aclararme para lograrlo.
Espero tú respuesta.
Hola Antonio.
Gracias por los comentarios.
La verdad es que ahora hace tiempo que no me peleo con la Google App, pero lo tendré en cuenta para futuras modificaciones del artículo.
@Germán Estévez
Gracias por responder Germán, creo que sería una buena forma de completar el artículo.
Saludos.
Qué tal buen día.
Muchas gracias por tus aportes antes que nada y pues escribo porque tengo una duda y no se por donde buscar.
¿Cómo podría yo lanzar una actualización de mi aplicación hecha en Delphi sin tener que publicarla en la Play Store?, esto es así porque es una app que desarrollé para la empresa en la que trabajo. He visto apps que mandan una notificación push diciendo que hay una actualización y al dar tap sobre la notificación, se descarga el .apk y se actualiza la app en automático, me gustaría hacer algo similar. Espero haberme explicado y ojalá me puedas contestar. Saludos!
@Ignacio
Hola.
Si no quieres hacerlo vía la Play Store, deberás hacerlo como lo hacen las aplicaciones normales (no móviles). Al entrar consultar la versión de la aplicación actual y consultar si hay alguna nueva en internet (ya sea mediante WS, FTP,…).
Si hay una versión nueva puedes avisar al usuario, pero para poder instalarla de un lugar que no se la Play Store, debes desactivar la configuración que permite hacerlo. Eso deberás solicitarselo al usuario.
Después puedes descargar el APK y el usuario debe instalarla.
Como ves hay algunos pasos que debe hacerlos el usuario, no creo quepor temas de seguridad puedas completar todo el proceso de forma automática.