giovedì 11 maggio 2017

Come firmare un APK su Windows

Come forse saprai, se stai sviluppando un app per cellulare android che vuoi distribuire in giro, o anche solo installare sul tuo telefono, devi prima firmare l'apk contenente il tuo gioco/applicativo.

Aggiungere un certificato alla tua applicazione per android è un passaggio doveroso per poter dare una sorta di garanzia che l'app in questione non è malevola, quindi, imparare come fare è una cosa obbligatoria se vuoi pubblicare applicazioni sul play store.

La guida che andrò a spiegare qui sotto è specifica per windows 10, e precedenti/successivi, ma ovviamente il procedimento potrebbe andare anche bene su linux ed altri S.O..


Come firmare un APK su Windows


Per poter firmare un apk e mettere un certificato, bisogna aver installato sul proprio pc, open ssl per windows.
Puoi trovare uno zip da scompattare in una cartella del tuo pc a questo indirizzo:
https://sourceforge.net/projects/openssl/

Ovviamente, se mappi openssl nei path di windows (se non sai come fare leggi qui), potrai lanciare i comandi che ti sto per indicare con molta più semplicità.

Per poter creare un certificato per il tuo apk, hai bisogno di un altro file, il cui nome è: SignApk.jar.
Puoi trovare questo file free tranquillamente in rete, qui per comodità ti riporto il primo link che ho trovato io:
https://github.com/appium/sign/raw/master/dist/signapk.jar

Adesso, copia il file signapk.jar dentro la cartella contenente l'apk da firmare, poi, apri il prompt di dos e posizionati nella cartella dove è presente il tuo .apk.

Ora, digita il seguente comando (ovviamente funziona scritto così solo se hai mappato openssl, altrimenti devi indicare il suo percorso a mano):

openssl genrsa -out key.pem 1024

Starai di fatto creando un file chiamato key.pem, che è una sorta di file contenente una chiave privata (private key).

Come firmare un APK su Windows

Adesso digita:

openssl req -new -key key.pem -out request.pem

Ti verranno chieste una serie di informazioni (nome, email, azienda, stato, città, ecc,) che verranno incorporate nella richiesta di certificato (request.pem).
Qui ti verrà anche chiesto di inserire una password (credo facoltativa), che dovrai segnarti, nel caso tu volessi ricompilare / cambiare qualcosa.

request.pem

Il prossimo comando da lanciare dal prompt dei comandi di dos è:

openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem

Avrai così generato il certificato (certificate.pem).

certificate.pem

Come puoi vedere a video, c'è un errore/warning con scritto "unable to write random state", non so esattamente cosa significhi, ma non è un errore bloccante per fortuna.

Infine, lancia il comando:

openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt

Avrai così generato una chiave criptata dentro un file chiamato key.pk8.

key.pk8

Ed eccoci al passaggio finale, quello in cui potrai finalmente firmare l'apk certificato della tua app android, tramite il seguente comando dos:

java -jar signapk.jar certificate.pem key.pk8 nome-app.apk  nuovo-nome-app-firmata.apk

Con questo comando andrai di fatto a creare un nuovo file apk, certificato e firmato in modo da poter essere distribuito / installato su tutti i telefoni/tablet e dispositivi mobili con sopra android.

Per questo tutorial è tutto, spero ti sia stato utile :)

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon