Crea apk di rilascio Android su Phonegap 3.x CLI


108

Come posso creare un'app Android in locale utilizzando la CLI di Phonegap 3.x, pronta per il rilascio? Controllo la cartella bin generata all'interno della directory platform / android del progetto e ho solo APK .debug.

A proposito, io uso questo comando: phonegap local build android

Risposte:


153

Questo è per Phonegap 3.0.xa 3.3.x. Per PhoneGap 3.4.0 e versioni successive, vedere di seguito .

Ho trovato parte della risposta qui , nella documentazione di Phonegap. Il processo completo è il seguente:

  1. Apri una finestra della riga di comando e vai a / percorso / a / tuo / progetto / piattaforme / android / cordova .

  2. Corri build --release. Questo crea un APK di rilascio non firmato in / path / to / your / project / platform / android / bin folder, chiamato YourAppName-release-unsigned.apk.

  3. Firma e allinea l'APK utilizzando le istruzioni nei documenti ufficiali degli sviluppatori Android .

Grazie a @LaurieClark per il collegamento ( http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios-and- android-projects / ) e il blogger che lo pubblica, perché mi ha messo in pista.


9
Ho dovuto modificare manualmente il mio file AndroidManifest.xml dove <application android:debuggable="true"...avevo bisogno di cambiare<application android:debuggable="false"
Ian Jamieson

3
Devi anche allineare la cosa con zip dopo: zipalign -v 4 your-unaligned.apk your-align.apk
Damian

13
Sto eseguendo Cordova 3.4.1-0.1.0 e il file viene creato in/path/to/your/project/platforms/android/ant-build
AlexStack

1
Sembra che, essendo specifico, questo sia per phonegap 3.0.xa 3.3.x, da 3.4.x in poi questo può variare.
Guillermo Gutiérrez

Grazie mille Guillermo. +1
Quick_Silver

112

In PhoneGap 3.4.0 puoi chiamare:

cordova build android --release

Se hai impostato il file "ant.properties" nella directory "piattaforme / android" come segue:

key.store=/Path/to/KeyStore/myapp-release-key.keystore
key.alias=myapp

Quindi ti verrà richiesta la password del tuo keystore e il file di output (myapp-release.apk) finisce nella directory "piattaforme / android / ant-build" già firmato e allineato e pronto per la distribuzione.


1
L'attuale versione 3.4.0 di Cordova non include un file "ant-properties".
FASE

8
Creata ant.propertiesnel platforms/androide appena lasciato queste due proprietà in esso. Funziona perfettamente, grazie!
Adam Tuttle

6
Se non sei sicuro del keystore / alias o di come crearli, i dettagli completi sono su developer.android.com/tools/publishing/app-signing.html
Shai

6
Si noti inoltre che è possibile specificare le proprietà key.store.password e key.alias.password in questo file, quindi non sarà necessario immetterlo ogni volta che si crea la versione. Ovviamente sii cauto e non eseguire il commit di questo file nel sistema di versioni.
vbezhenar

5
Per cordova 5.0.0 e versioni successive, crea un build.json nella radice del tuo progetto e riempilo con {"android": {"release": {"keystore": "/path/to/your.keystore", "alias ":" youalias "}}} invece del file ant.properties. Cordiali saluti cordova.apache.org/docs/en/edge/…
artberri

19

In cordova 6.2.0

cd cordova/ #change to root cordova folder
platforms/android/cordova/clean #clean if you want
cordova build android --release -- --keystore="/path/to/keystore" --storePassword=password --alias=alias_name #password will be prompted if you have any

Risposta precedente:

Secondo cordova 5.0.0

{
     "android": {
         "release": {
             "keystore": "app-release-key.keystore",
             "alias": "alias_name"
         }
     }
 }

ed eseguito ./build --release --buildConfig build.jsondalla directoryplatforms/android/cordova/

la posizione del file keystore è relativa a platforms/android/cordova/, quindi nel .keystorefile di configurazione sopra e si build.jsontrovano nella stessa directory.

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


15

Seguendo @ steven-anderson puoi anche configurare le password all'interno di ant.properties, in modo che il processo possa essere completamente automatizzato

quindi se metti nella piattaforma \ android \ ant.properties quanto segue

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword

1
Su Windows devi sfuggire alle barre ... '... key.store = C: \\ OpenSSL-Win32 \\ certs \\ android_key_store.keystore ...'
bkomac

4

mi sono chiesto molto in giro perché ho avuto lo stesso problema, ma nella mia installazione il comando "cordova" non è mai stato disponibile e "phone gap build android --release" ha semplicemente ignorato la piattaforma / android / ant.properties.

quindi guardando nel filtro della mia piattaforma ho trovato una cartella denominata "cordova" e al suo interno c'era un binario "build" che accettava l'argomento --release, mi chiedeva i portachiavi e ho concluso con un file firmato e pronto per la produzione APK.

questo non è mai stato documentato in nessuna parte del sito di interruzioni telefoniche e, francamente, ora odio il phonegap :( avrebbe dovuto rendere le cose più facili ma tutto era semplicemente complicato :(


2

Creazione dell'app PhoneGap per Android per la distribuzione su Google Play Store

Questi passaggi funzionerebbero per Cordova, PhoneGap o Ionic. L'unica differenza sarebbe, ovunque venga effettuata una chiamata cordova, sostituirla con phonegapo ionic, per il tuo particolare scenario.

Una volta terminato lo sviluppo e pronto per la distribuzione, segui questi passaggi:

  1. Apri una finestra della riga di comando (Terminale su macOS e Linux OPPURE Prompt dei comandi su Windows).

  2. Vai al / percorso / al / tuo / progetto /, che chiameremmo radice del progetto.

  3. Mentre sei alla radice del progetto, rimuovi il plug-in "Console" dal tuo set di plug-in.

    Il comando è:cordova plugin rm cordova-plugin-console

  4. Mentre sei ancora alla radice del progetto, usa il comando di compilazione cordova per creare un APK per la distribuzione del rilascio.

    Il comando è:cordova build --release android

  5. Il processo precedente crea un file chiamato android-release-unsigned.apknella cartellaProjectRoot/platforms/android/build/outputs/apk/

  6. Firma e allinea l'APK utilizzando le istruzioni su https://developer.android.com/studio/publish/app-signing.html#signing-manually

    Alla fine di questo passaggio l'APK che ottieni può essere caricato sul Play Store .

Nota: come principiante o principiante, l'ultimo passaggio potrebbe essere un po 'confuso come lo era per me. È possibile riscontrare alcuni problemi e avere alcune domande su cosa siano questi comandi e dove trovarli.

Q1. Cosa sono jarsigner e keytool ?
Risposta: Le istruzioni per la firma dell'app Android ti dicono in particolare di cosa trattano jarsigner e keytool, MA non ti dice dove trovarli se ti imbatti in un "errore di comando non trovato" nella finestra della riga di comando.

Quindi, se hai aggiunto il Java Development Kit (JDK) alla tua variabile PATH , semplicemente eseguendo i comandi come nella Guida funzionerebbe. MA, se non lo hai nel tuo PATH, puoi sempre accedervi dalla cartella bin della tua installazione JDK.

Q2. Dov'è zipalign ?
Risposta: C'è un'alta probabilità di non trovare il comando zipalign e ricevere il "comando non trovato errore". Probabilmente staresti cercando su google zipalign e dove trovarlo?

L' utilità zipalign è presente nella cartella di installazione di Android SDK. Su macOS, la posizione predefinita è in user-name/Library/Android/sdk/,. Se vi dirigete verso la cartella che si dovrebbe trovare un sacco di altre cartelle come docs, platform-tools, build-tools, tools, add-ons...

Aprire la build-toolscartella. cd build-tools. Qui, ci sarebbe un numero di cartelle con versione in base alla catena di strumenti di build che stai utilizzando in Android SDK Manager. Zipalignè disponibile in ciascuna di queste cartelle. Personalmente scelgo la cartella con l'ultima versione. Apri qualsiasi.

Su macOS o Linux potrebbe essere necessario utilizzare./zipalignpiuttosto che digitare semplicemente zipaligncome menzionato nella documentazione. Su Windows, zipalignè abbastanza buono.


1

L'ho fatto funzionare copiando e incollando l'app firmata nella stessa directory di zipalign. Sembra che aapt.exe non sia riuscito a trovare il file sorgente anche se indicato il percorso. cioè questo non ha funzionato zipalign -f -v 4 C: ... \ CordovaApp-release-unsigned.apk C: ... \ destination.apk ha raggiunto aapt.exeCordovaApp-release-unsigned.apk, si è bloccato e dopo aver premuto return "aapt.exeCordovaApp-release-unsigned.apk" non viene riconosciuto come comando interno o esterno, programma eseguibile o file batch. E questo ha fatto zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk


Grazie per il consiglio. Puoi anche includere il percorso della cartella zipalign nella variabile d'ambiente PATH.
Guillermo Gutiérrez

0

So che questa domanda chiede specificamente Phonegap 3.X, ma solo per riferimento qualsiasi versione di Phonegap sopra la 4.0.0 usa Gradle invece di Ant per costruire di default. Per usare Ant invece di Gradle puoi aggiungerlo al tuo config.xml:

<preference name="android-build-tool" value="ant" />

Quando si utilizza Gradle, le informazioni sulla firma del keystore ora devono andare in una nuova posizione ( come descritto in questo post ). Crea un nuovo file chiamato " release-signing.properties " nella stessa cartella del file "build.gradle" e inserisci il seguente contenuto:

storeFile=..\\..\\some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.