MICHELEPISANI.IT
 

Procedura passo passo da Prompt dei comandi

Pubblicare la propria App ibrida sul Play Store di Android

Novembre 06
07:352016

In questo articolo non mi limiterò solo a descrivere i passaggi necessari per la pubblicazione della vostra app ibrida, creata ad esempio con Apache Cordova o Ionic, sul Play Store di Android ma, ove possibile, cercherò di dare dei suggerimenti nel tentativo di migliorare il percorso verso la pubblicazione e gli eventuali aggiornamenti futuri dell'applicazione.

Ovviamente credo di poter dare per scontato che arrivati a questo punto l'ambiente di sviluppo sia già stato precedentemente configurato a dovere, in alternativa trovate i passaggi per la configurazione nella prima parte di una qualsiasi delle seguenti guide:
COME CREARE UN'APP IBRIDA CON IONIC IN 3 SEMPLICI PASSAGGI
COME CREARE UN'APPLICAZIONE IBRIDA PER DISPOSITIVI ANDROID

Per prima cosa, una volta che la versione della vostra app è pronta per la pubblicazione potrebbe essere buona norma crearsi una copia di backup della cartella principale in modo da mantenerne l'originale per le successive modifiche e test e quella copiata (da rinominare appendendendo ad esempio il numero della versione: _v01) sia per gli opportuni adeguamenti alla pubblicazione (che vediamo a breve) che come archivio di versione rilasciata.

Dal Prompt dei comandi (command line, CLI) spostarsi nella cartella del progetto che si intende pubblicare e rimuovere i plugin che sono stati utilizzati solo per le fasi test e debug ma che non dovrebbero essere in produzione, ad esempio il plugin per il debug in console:

cordova plugin rm cordova-plugin-console

Se è il primo rilascio dell'app potete ignorare il passaggio descritto in questo paragrafo altrimenti è necessario ricordare che è obbligatorio modificare il valore di version nel file config.xml con un numero crescente altrimenti in fase di caricamento dell'APK sul Play Store si riceverà un errore simile al seguente: DEVI UTILIZZARE UN ALTRO CODICE DI VERSIONE PER IL TUO APK.


A questo punto per pubblicare l'app sul Play Store è necessario generare una build di rilascio, per farlo eseguire da CLI il seguente comando:

cordova build --release android

L'APK verrà generato al seguente path: platforms/android/build/outputs/apk
Accedendo al percorso troverete un file con un nome simile al seguente: platforms/android/build/outputs/apk/android-release-unsigned.apk

E' il momento di generare la chiave privata (keystore) relativa alla vostra app utilizzando il comando keytool fornito con l'installazione del JDK. Se eseguendo il comando da CLI questo strumento non dovesse essere trovato significa che l'installazione dell'ambiente di sviluppo non è stata effettuata a dovere, nel caso rimando pertanto agli articoli linkati ad inizio guida dove trovate tutte le informazioni necessarie (se nonostante ciò non riuscite a risolvere lasciate un commento in fondo all'articolo e cercherò di aiutarvi).
Il comando per generare il keystore è il seguente:

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Per una più facile gestione ed identificazione consiglio di sostituire al termine 'my-release-key.keystore' il nome della vostra app, ad esempio 'nomeapp.keystore' e ad 'alias_name' un nome che vi ricordate, che nel caso specifico potrebbe essere 'nomeapp' (senza gli apici).
Una volta dato l'invio per eseguire il comando vi verrà chiesto di immettere una password, salvatievi da qualche parte il nome dell'alias e la password per futuri utilizzi del keystore. Successivamente vengono richieste altre informazioni quali nome, organizzazione, località, ... alle quali basta rispondere e premere Invio.
Al termine verrà creato un file con il nome indicato (nomeapp.keystore) nella directory corrente (quella da cui è stato lanciato il comando).
ATTENZIONE: salvarsi una copia del file keystore da qualche parte in quanto, se doveste perderlo, non potrete pubblicare aggiornamenti alla vostra app ma sarete costretti a generare un nuovo keystore e dare un nome di package diverso alla vostra app per effettuare una pubblicazione ex-novo sul Play Store (perdendo di conseguenza le informazioni relative a download, statistiche, recensioni, ecc...).

E' giunto il momento di firmare l'APK con il keystore tramite il comando jarsigner:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name

L'ultimo passaggio prima della pubblicazione è quello di effettuare un'allineamento dell'apk, con il comando zipalign, per ottimizzarlo:

zipalign -v 4 android-release-unsigned.apk nomeapp.apk

Il tool zipalign.exe si trova al path /android/sdk/build-tools/VERSION/zipalign dove VERSION indica il numero di versione del build-tools che trovate dentro la relativa cartella.
Eseguendo questo comando dalla directory della vostra app è probabile che vi venga restituito un errore simile al seguente:

"zipalign" non è riconosciuto come comando interno o esterno, un programma eseguibile o un file batch.
Nel caso dovesse succedervi trovate la soluzione in questo articolo.

A questo punto otterrete il vostro file nomeapp.apk pronto per essere pubblicato sul Play Store (se non avete ancora un account sviluppatori dovete collegarvi alla Google Play Store Developer Console e creare un account che costa 25$ una tantum. Dopodichè accedendo alla Console per gli Sviluppatori non vi sarà difficile trovare le evidenti Call to Action per Aggiungere una nuova applicazione e Caricare un APK).

Tags
Condividi

Autore

Michele Pisani

Michele Pisani

Ho uno spiccato orientamento al problem-solving, se è troppo facile non mi diverto :)
Credo nella volontà e nel cambiamento perchè hanno fatto della mia passione il mio pane quotidiano.
Se devo descrivermi con una sola parola direi... "Concretezza", la mia stretta di mano è una garanzia.

11 Commenti

  1. franco giovedì 7 settembre 2017 alle ore 17.07

    Buonasera, ho letto tutta la guida e finalmente sono riuscito ad creare un apk. Il problema adesso e che non riesco a generare la chiave, mi esce questo messaggio \: *** "keytool" non è riconosciuto come comando interno o esterno, un programma eseguibile o un file batch. *** Cosa puo essere ? Grazie

    Rispondi a questo commento
    • MicheleAutore venerdì 8 settembre 2017 alle ore 00.28

      Ciao franco,
      quell'errore significa che stai cercando di eseguire il programma 'keytool' ma evidentemente non hai configurato tra le variabili d'ambiente la cartella che lo contiene.

      Nel caso tu volessi verificare la sua presenza per capire se effettivamente le variabili d'ambiente sono state impostate correttamente o meno, dovresti trovarlo nella cartella del jdk di Java, ovvero in un pattern simile al seguente:

      C:/Program Files/Java/jdk1.6.0_26/bin/keytool.exe

      Rispondi a questo commento
  2. FRANCO venerdì 8 settembre 2017 alle ore 10.01

    Allora il keytool.exe è presente nella cartella c\:/programmi/java/jdk1.8.0_144/bin , Nelle variabili di sistema ho creato NOME \: JAVA_HOME e VALORE \: C\:programmijavajdk1.8.0_144..... dove sbaglio ? Grazie

    Rispondi a questo commento
  3. FRANCO venerdì 8 settembre 2017 alle ore 11.07

    OK, scoperto l'arcano,ho risolto aggiungendo /bin alla path. Aggiungo che per firmare con jarsinger il file del .apk deve trovarsi nella cartella principale.

    Rispondi a questo commento
    • MicheleAutore venerdì 8 settembre 2017 alle ore 20.19

      Ottimo franco, sono contento che tu sia riuscito a risolvere!
      Grazie per la dritta aggiuntiva, sicuramente potrà essere utile a qualcuno che si troverà in una situazione simile.

      Rispondi a questo commento
  4. Antonio venerdì 20 ottobre 2017 alle ore 22.19

    Ricevo questo errore da cosa dipende? Illegal option\: -HelloWorld-release-unsigned.apk Please type jarsigner -help for usage

    Rispondi a questo commento
    • MicheleAutore venerdì 20 ottobre 2017 alle ore 23.54

      Ciao Antonio,
      probabilmente stai utilizzando un'opzione non prevista per jarsigner e la console ti suggerisce di digitare il comando 'jarsigner -help' per prendere visione delle opzioni disponibili.

      Rispondi a questo commento
      • Antonio sabato 21 ottobre 2017 alle ore 10.01

        Grazie michele per la velocità con cui hai risposto, comunque ho seguito la tua guida passo per passo, quando uso questo comando:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name Mi rilascia questo errore soluzioni?

      • MicheleAutore domenica 22 ottobre 2017 alle ore 22.49

        Ciao Antonio,
        ma il tuo apk si chiama 'HelloWorld-release-unsigned.apk'?

  5. stefy mercoledì 1 novembre 2017 alle ore 17.05

    salve. ho un problema sulla pagina facebook..non riesco a unirla..mi dice che è in sospeso un'unione. come risolvare cio?

    Rispondi a questo commento

Scrivi un Commento

Il tuo indirizzo email non sarà pubblicato.
I campi contrassegnati da un * sono obbligatori

Articoli e Argomenti correlati

Categorie popolari

Iscriviti alla mia newsletter

La tua e-mail con me sarà al sicuro.
Non fornirò mai le tue informazioni a nessuno!

Ultimi commenti

Michele Pisani

Ciao stefy,
la tua domanda non è proprio pertinente a questo articolo... ti consiglio di dare …

stefy

salve. ho un problema sulla pagina facebook..non riesco a unirla..mi dice che è in sospeso …

Michele

Ciao Antonio,
ma il tuo apk si chiama 'HelloWorld-release-unsigned.apk'?

Antonio

Grazie michele per la velocità con cui hai risposto, comunque ho seguito la tua guida passo per …