Construya la versión apk de Android en Phonegap 3.x CLI

108

¿Cómo puedo crear una aplicación de Android localmente usando la CLI de Phonegap 3.x, lista para su lanzamiento? Verifico la carpeta bin generada dentro del directorio de plataformas / android del proyecto, y solo tiene APK .debug.

Por cierto, uso este comando: phonegap local build android

Guillermo Gutiérrez
fuente

Respuestas:

153

Esto es para Phonegap 3.0.xa 3.3.x. Para PhoneGap 3.4.0 y superior, consulte a continuación .

Encontré parte de la respuesta aquí , en la documentación de Phonegap. El proceso completo es el siguiente:

  1. Abra una ventana de línea de comando y vaya a / ruta / a / su / proyecto / plataformas / android / cordova .

  2. Corre build --release. Esto crea un APK de lanzamiento sin firmar en / ruta / a / su / proyecto / plataformas / android / bin carpeta, llamado YourAppName-release-unsigned.apk.

  3. Firme y alinee el APK siguiendo las instrucciones de los documentos oficiales del desarrollador de Android .

Gracias a @LaurieClark por el enlace ( http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios-and- android-projects / ) y el blogger que lo publica, porque me puso en la pista.

Guillermo Gutiérrez
fuente
9
Tuve que modificar manualmente mi archivo AndroidManifest.xml donde tenía <application android:debuggable="true"...que cambiar a<application android:debuggable="false"
Ian Jamieson
3
También tienes que alinear con cremallera lo siguiente: zipalign -v 4 your-unaligned.apk your-align.apk
Damian
13
Estoy ejecutando Cordova 3.4.1-0.1.0 y el archivo se crea en/path/to/your/project/platforms/android/ant-build
AlexStack
1
Parece que, siendo específico, esto es para phonegap 3.0.xa 3.3.x, desde 3.4.xy adelante esto puede variar.
Guillermo Gutiérrez
Muchas gracias Guillermo. +1
Quick_Silver
112

En PhoneGap 3.4.0 puede llamar a:

cordova build android --release

Si ha configurado el archivo 'ant.properties' en el directorio 'plataformas / android' como el siguiente:

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

Luego, se le pedirá su contraseña de almacén de claves y el archivo de salida (myapp-release.apk) termina en el directorio 'plataformas / android / ant-build' ya firmado y alineado y listo para implementar.

Steven Anderson
fuente
1
La versión 3.4.0 actual de Cordova no incluye un archivo 'ant-properties'.
SteAp
8
Creado ant.propertiesen platforms/androidy acaba de caer estas dos propiedades en ella. Funciona perfectamente, gracias!
Adam Tuttle
6
Si no está seguro acerca del almacén de claves / alias o cómo crearlos, los detalles completos están en developer.android.com/tools/publishing/app-signing.html
Shai
6
También tenga en cuenta que puede especificar las propiedades key.store.password y key.alias.password en este archivo, por lo que no tendrá que ingresarlas cada vez que cree la versión. Por supuesto, tenga cuidado y no envíe este archivo al sistema de versiones.
vbezhenar
5
Para cordova 5.0.0 y superior, cree un build.json en la raíz de su proyecto y rellénelo con {"android": {"release": {"keystore": "/path/to/your.keystore", "alias ":" youalias "}}} en lugar del archivo ant.properties. FYI cordova.apache.org/docs/en/edge/…
artberri
19

En Córdoba 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

Respuesta anterior:

Según cordova 5.0.0

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

y ejecutar ./build --release --buildConfig build.jsondesde el directorioplatforms/android/cordova/

La ubicación del archivo de almacén de claves es relativa a platforms/android/cordova/, por lo que en el .keystorearchivo de configuración anterior y build.jsonestán en el mismo directorio.

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

KrIsHnA
fuente
15

Siguiendo a @ steven-anderson también puede configurar contraseñas dentro de ant.properties, por lo que el proceso puede ser completamente automatizado

así que si pones en la plataforma \ android \ ant.properties lo siguiente

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword
Simone Avogadro
fuente
1
En Windows, debe escapar de las barras ... '... key.store = C: \\ OpenSSL-Win32 \\ certs \\ android_key_store.keystore ...'
bkomac
4

Me pregunté mucho porque tuve el mismo problema, pero en mi instalación, el comando "cordova" nunca estuvo disponible y "phone gap build android --release" simplemente ignoró la plataforma / android / ant.properties.

así que mirando dentro de mi filtro de plataforma encontré una carpeta llamada "cordova" y dentro de ella había un binario de "compilación" que aceptaba el argumento --release, me pidió los llaveros y terminé con un archivo firmado y listo para la producción APK.

esto nunca se documentó en ninguna parte del sitio de la brecha telefónica y, francamente, ahora odio un poco la brecha telefónica :( se suponía que iba a facilitar las cosas, pero todo era simplemente complicado :(

Freaktor
fuente
2

Creación de la aplicación de Android PhoneGap para su implementación en Google Play Store

Estos pasos funcionarían para Cordova, PhoneGap o Ionic. La única diferencia sería, donde sea que cordovase coloque una llamada a , reemplazarla con phonegapo ionic, para su escenario particular.

Una vez que haya terminado con el desarrollo y esté listo para implementar, siga estos pasos:

  1. Abra una ventana de línea de comando (Terminal en macOS y Linux O Símbolo del sistema en Windows).

  2. Dirígete a / ruta / a / tu / proyecto /, al que nos referiríamos como la raíz del proyecto.

  3. Mientras esté en la raíz del proyecto, elimine el complemento "Consola" de su conjunto de complementos.

    El comando es:cordova plugin rm cordova-plugin-console

  4. Mientras aún está en la raíz del proyecto, use el comando cordova build para crear un APK para la distribución de la versión.

    El comando es:cordova build --release android

  5. El proceso anterior crea un archivo llamado android-release-unsigned.apken la carpetaProjectRoot/platforms/android/build/outputs/apk/

  6. Firme y alinee el APK usando las instrucciones en https://developer.android.com/studio/publish/app-signing.html#signing-manually

    Al final de este paso, el APK que obtiene se puede cargar en Play Store .

Nota: como novato o principiante, el último paso puede resultar un poco confuso para mí. Uno puede encontrarse con algunos problemas y puede tener algunas preguntas sobre qué son estos comandos y dónde encontrarlos.

Q1. ¿Qué son jarsigner y keytool ?
Respuesta: Las instrucciones de firma de la aplicación de Android le dicen específicamente de qué se tratan jarsigner y keytool, PERO no le dice dónde encontrarlos si se encuentra con un 'error de comando no encontrado' en la ventana de línea de comando.

Por lo tanto, si tiene el Kit de desarrollo de Java (JDK) agregado a su variable PATH , simplemente ejecutar los comandos como en la Guía funcionaría. PERO, si no lo tiene en su RUTA, siempre puede acceder a ellos desde la carpeta bin de su instalación de JDK.

Q2. ¿Dónde está zipalign ?
Respuesta: Existe una alta probabilidad de no encontrar el comando zipalign y recibir el 'error de comando no encontrado'. Probablemente estarías buscando en Google zipalign y ¿dónde encontrarlo?

La utilidad zipalign está presente en la carpeta de instalación del SDK de Android. En MacOS, la ubicación predeterminada está en, user-name/Library/Android/sdk/. Si se dirige a la carpeta que puedes encontrar un montón de otras carpetas como docs, platform-tools, build-tools, tools, add-ons...

Abrir la build-toolscarpeta. cd build-tools. Aquí, habría una serie de carpetas que están versionadas de acuerdo con la cadena de herramientas de compilación que está utilizando en Android SDK Manager. ZipAlignestá disponible en cada una de estas carpetas. Yo personalmente busco la carpeta con la última versión. Abra Cualquiera.

En macOS o Linux, es posible que deba usar en./zipalignen lugar de simplemente escribir zipaligncomo menciona la documentación. En Windows, zipalignes lo suficientemente bueno.

incorelabs
fuente
1

Conseguí que esto funcionara copiando y pegando la aplicación firmada en el mismo directorio que zipalign. Parece que aapt.exe no pudo encontrar el archivo de origen incluso cuando se le proporcionó la ruta. es decir, esto no funcionó zipalign -f -v 4 C: ... \ CordovaApp-release-unsigned.apk C: ... \ destination.apk alcanzó aapt.exeCordovaApp-release-unsigned.apk, se congeló y al presionar regresar 'aapt.exeCordovaApp-release-unsigned.apk' no se reconoce como un comando interno o externo, programa operable o archivo por lotes. Y esto hizo zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk

robert deveau
fuente
Gracias por el consejo. También puede incluir la ruta a la carpeta de zipalign en la variable de entorno PATH.
Guillermo Gutiérrez
0

Sé que esta pregunta se refiere específicamente a Phonegap 3.X, pero solo como referencia, cualquier versión de Phonegap superior a 4.0.0 usa Gradle en lugar de Ant para compilar de forma predeterminada. Para usar Ant en lugar de Gradle, puede agregar esto a su config.xml:

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

Al usar Gradle, la información de firma del almacén de claves ahora debe ir a una nueva ubicación ( como se describe en esta publicación ). Cree un nuevo archivo llamado ' release-signing.properties ' en la misma carpeta que el archivo "build.gradle" y coloque dentro del siguiente contenido:

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
Julian
fuente
-7

Puede probar este comando, debería compilar y ejecutar la aplicación (por lo que debería crearse .apk):

phonegap local run android

Laurie Clark
fuente
3
Todavía crea solo los APK de depuración.
Guillermo Gutiérrez
2
No, es solo que crea APK firmados de depuración, no APK de lanzamiento.
Guillermo Gutiérrez
1
Encontré la solución aquí (3/4 hacia abajo: "Finalizar apk para carga de Google Play"): iphonedevlog.wordpress.com/2013/08/16/…
Laurie Clark