Quasar Framework — Assinando uma APK durante o Build

Tobias Mesquita
3 min readJul 27, 2019

--

edit Icon made by Kiranshastry from www.flaticon.com

Nos últimos meses, tenho notado que muitos programadores tem enfrentando uma certa dificuldade com o processo de assinar uma APK, e mesmo quando superam esta primeira etapa, reclamam com o tempo perdido assinando a APK manualmente.

O que muitos não percebem, é que é possível passar opções adicionais para o comando do cordova durante o `quasar dev/build`, e através destes comandos é possível automatizar este processo. Dada esta introdução, vamos começar

O primeiro passo é criar as keystores/jks, para este artigo iremos criar duas, uma a ser usada durante o desenvolvimento e outra para a versão final. para tal você precisará ter o JDK instalado e a pasta bin do mesmo no seu Path.

$ keytool -genkey -v -keystore quasar-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias quasar-release
$ keytool -importkeystore -srckeystore quasar-release-key.jks -destkeystore quasar-release-key.jks -deststoretype pkcs12
$ keytool -genkey -v -keystore quasar-debug-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias quasar-debug
$ keytool -importkeystore -srckeystore quasar-debug-key.jks -destkeystore quasar-debug-key.jks -deststoretype pkcs12

O próximo passo é criar o projeto usando o Quasar CLI, aqui não há muito segredos.

Atualize o @quasar/cli para a versão mais recente

$ npm i -g @quasar/cli@latest

Crie um novo projeto

$ quasar create quasar-cordova-sign
$ cd quasar-cordova-sign

Então atualize o cordova para a versão mais recente

$ npm i -g cordova@latest

Então, adicione o modo cordova e a plataforma android.

$ quasar mode add cordova
$ cd src-cordova
$ cordova platform add android
$ cd ..

Agora que temos um projeto inicializado, precisamos criar um arquivo de inicialização, aqui chamaremos ele de build.cordova.json.

{
"android": {
"debug": {
"keystore": "../quasar-debug-key.jks",
"storePassword": "*********",
"alias": "quasar-debug",
"password" : "*********",
"keystoreType": "jks"
},
"release": {
"keystore": "../quasar-release-key.jks",
"storePassword": "*********",
"alias": "quasar-release",
"password" : "*********",
"keystoreType": "jks"
}
}
}

E claro, não deixe de mover o build.cordova.json, quasar-debug-key.jks e quasar-release-key.jks para a raiz do projeto e de incluir os mesmos no gitignore.

Agora precisamos apenas incluir novos scripts no package.json

{
"scripts": {
"lint": "eslint --ext .js,.vue src",
"test": "echo \"No test specified\" && exit 0",
"cordova:dev": "quasar dev -m cordova -T android -- --buildConfig=\"../build.cordova.json\"",
"cordova:build": "quasar build -m cordova -T android -- --buildConfig=\"../build.cordova.json\""
}
}

E por fim, mas não menos importante, precisamos testar se está tudo funcionando.

yarn cordova:dev

E para finalizar, um pequeno bonus, muitas libs/serviços requerem que você informe a fingerprint da sua APK/certificado para que você tenha acesso a eles, para tal execute o seguinte comando.

$ keytool -v -list -keystore quasar-debug-key.jks
$ keytool -v -list -keystore quasar-release-key.jks

Por exemplo, o Google vai requerer o fingerprint SHA1 em hexa, e o Facebook em base64.

--

--