Firmar y generar APK en ionic 5 con cordova

apk ionic

Generar y firmar APK de nuestras aplicaciones Android puede ser un tema que puede llevar muchos dolores de cabeza.

En esta guía te voy a guiar paso a paso para que logres generar una APK usando cordova de un proyecto en ionic 5

Cabe mencionar que para esta guía NO vamos a utilizar Android Studio, vamos a trabajar todo desde la terminal como verdaderos geeks

Ionic está trabajando en una alternativa para Cordova llamada Capacitor. Actualmente Capacitor no tiene soporte para generar apk desde la terminal y en su lugar hay que usar Android Studio.

Antes de todo, asegurate tener instaladas las dependencias npm requeridas

$ npm i -g @ionic/cli cordova cordova-res

Praparar el SDK de andoid

Antes de todo debes tener instalado los juguetitos de Java. El JRE y JDK

Vamos a descargar estos archivos y los vamos a descomprimir en nuestra carpeta android-sdk

Voy a crear una carpeta en mi directorio raiz que voy a llamar android-sdk, tu puedes llamarla como quieras y colocarla donde quieras.

Descomprime la carpeta tools del zip en la carpeta android-sdk

Vamos a crear la varaible de entorno JAVA_HOME que apunte a la ruta de tu jdk. Ej: C:\Program Files\Java\jdk1.8.0_251

java home path

También necesitamos una variable llamada ANDROID_SDK_ROOT que apunte a la ruta de tu carpeta android-sdk

android sdk path

También cordova recomienda tener tools, tools/bin, y platform-tools en nuestro path

android tools path

Instalacion de Gradle Build

Camos a bajar la ultima versión de Gradle Build, lo descomprimimos en un lugar seguro. Por conveniencia en disco C:

También tenemos que configurar la variable de entorno GRADLE_HOME apuntando a la carpeta raiz del archivo descomprimido

gradle home path

Y también añadir el directorio bin al PATH

gradle home path

Generando la APK con ionic 5

Antes de generar la apk, nececitamos instalar el platform tools, también podemos instalar alguna versión de android

Debemos ejecutar el siguiente comando en nuestro directorio android-sdk/tools/bin

sdkmanager "platform-tools" "platforms;android-28"

También

sdkmanager packages "build-tools"

En caso de algun error inesperado usa la bandera –sdk_root más las opciones

sdkmanager --sdk_root=%ANDROID_SDK_ROOT% 

Esto va a instalar algunas licencias del android-28 y el platform-tools

IMPORTANTE: en caso de que te salga un error de que no se encuentra la clase primaria puede ser ser porque tienen espacios en la ruta. De ser el caso deben mover la carpeta del android-sdk al tu disco C: para que no tengan ese problema.

Su directorio de android-sdk debe quedar algo así después de todo:

Ahora si que si.

ionic cordova build android

¿Cómo firmar la apk?

Android requiere que todos los APK estén firmados de manera digital con un certificado para poder instalarse o actualizarse en un dispositivo

Adicional a eso, cuando queremos conectarnos con ciertas API nos piden tener la APK firmada, para que los servicios funcionen correctamente.

Lo primero que tenemos que hacer es bajarnos el OpenSSL de aquí y descomprimirlo en tu disco local dentro de una carpeta que yo llamé OpenSSL.

Ahora debes añadir al PATH el bin del openssl y el bin de java (si no lo tienes)

open ssl path

Ahora debes ejecutar este comando

keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore | openssl sha1 -binary | openssl base64

keytool es el comando de %JAVA_HOME%\bin, openssl tambien es un comando, en caso que tengas problemas puedes colocar el path C:\OpenSSL\bin

Puedes cambiar el -alias androiddebugkey, por el alias que tu quieras, solo no lo olvides.

Con esto ya puede ejecutar el comando para generar la apk en modo debug. usa –release para que puedas subirlo al play store.

ionic cordova build android --prod --keystore=%USERPROFILE%\.android\debug.keystore --alias=androiddebugkey

Este comando lo puedes usar también mientras desalloras

ionic cordova run android -l --keystore=%USERPROFILE%\.android\debug.keystore --alias=androiddebugkey

Ni te imaginas el dolor que da escribir eso todo el tiempo, yo lo coloque como script en mi package.json

"scripts": {
    ...
    "android:debug": "ionic cordova build android --prod --keystore=%HOMEPATH%\\.android\\debug.keystore --alias=androiddebugkey",
    "run:browser": "ionic cordova run browser -l",
    "run:android": "ionic cordova run android -l --keystore=%HOMEPATH%\\.android\\debug.keystore --alias=androiddebugkey"
  },

Para obtener informacion de tu llave usa:

keytool -keystore %USERPROFILE%\.android\debug.keystore -list -v
MD5 Sha1 y sha256 android key

La vas a necesitar cuando las API’s te pidan información

Artículos que podrían gustarte