MICHELEPISANI.IT
 

Procedura passo passo da Prompt dei comandi

Pubblicare la propria App ibrida sul Play Store di Android

November 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

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.

17 Commenti

  1. franco Thursday, September 7, 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 Friday, September 8, 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 Friday, September 8, 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 Friday, September 8, 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 Friday, September 8, 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 Friday, October 20, 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 Friday, October 20, 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 Saturday, October 21, 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 Sunday, October 22, 2017 alle ore 22:49

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

  5. stefy Wednesday, November 1, 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
  6. tropenix Thursday, February 8, 2018 alle ore 16:13

    Ho 2 progetti ionic 2 che debuggati funzionano perfettamente sia su web che sul device android, installando andorid.debug.apk, ma non capisco perchè sul cellulare l'apk dell'uno è visto come aggiornamento dell'apk dell'altro

    Rispondi a questo commento
  7. Alessandro Thursday, May 21, 2020 alle ore 00:27

    Ciao Michele,
    Ho pubblicato uns cordova app su googje play.
    Tuttavia cercandola per nome o argomenti correlati. Non esce proprio nella ricerca.
    Hai qualche suggerimento?
    Grazie mille
    Alessandro

    Rispondi a questo commento
    • Michele PisaniAutore Thursday, May 21, 2020 alle ore 00:31

      Ciao Alessandro,
      se dal pannello di Google Play l'app risulta effettivamente pubblicata direi che è solo una questione di tempo e risulterà visibile e scaricabile nel breve periodo.

      Rispondi a questo commento
      • Alessandro Monday, May 25, 2020 alle ore 00:57

        Grazie mille Michele.
        Un caro saluto
        Alessandro

  8. Lorenzo Sunday, February 21, 2021 alle ore 11:00

    Grazie Michele per questo articolo che mi ha aiutato non poco nella pubblicazione della mia prima app.
    Aggiungerei un paio di indicazioni che potrebbero essere utili a qualcuno.

    1) E' necessario inserire preventivamente nella variabile di ambiente "path" i path di:
    keytool.exe
    jarsigner.exe
    zipalign.exe

    2) Effettuando la firma e l'allineamento, il nome dell'app dev'essere preceduto dal suo path relativo;.
    Nel mio caso(e penso anche di altri):
    platformsandroidappuildoutputsapk eleaseapp-release-unsigned.apk

    Inoltre, è utile inserire lo stesso path anche nel nel nome definitivo dell'applicazione che compare nel comando di allineamento. Altrimenti l'app allineata verrà posizionata nella cartella root del progetto Cordova.

    Con questo spero di aiutare qualcuno a risparmiare qualche ora di lavoro!

    Rispondi a questo commento
    • Michele PisaniAutore Sunday, February 21, 2021 alle ore 15:43

      Grazie Lorenzo!
      Mi fa piacere che l'articolo ti sia stato utile e soprattutto ti ringrazio per il contributo che hai dato.

      Sicuramente ci sono stati aggiornamenti in questi anni dove io sono passato ad altro core business, quindi grazie ancora per la conferma di validità del contenuto e per il tuo update! Questo è lo spirito giusto!

      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

Il Canale YouTube in ITALIANO

1 VIDEO GRATIS ogni 2 settimane! ISCRIVITI!

Entra a far parte della community su Facebook

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

Hai verificato se succede per tutte le pagine da un certo periodo di tempo in poi o solo su alcune?

Tecnowiz

Sono amministratore di un blog pure io... Intanto ti faccio i complimenti per questo articolo. …

Michele Pisani

Ciao Antonio, grazie per la fiducia :) In caso di più fogli è necessario inserire il codice del …

Antonio

Ciao Michele, ho acquistato il tuo libro che unitamente ai tuoi video sta diventando il mio corso …