No se puede construir el paquete androide firmado a través de studio visual cordova

Estoy tratando de crear un paquete de lanzamiento firmado para mi aplicación de Android utilizando Visual Studio 2015 Cordova Tools. Estoy utilizando Cordova 5.1.1, que requiere que yo provea el proceso de construcción con un archivo build.json, diciendo a la aplicación donde están el keystore y qué contraseña está usando. Sin embargo, cuando agrego el archivo build.json, no puedo hacer una compilación exitosa para liberar.

He seguido esta guía: https://github.com/Microsoft/cordova-docs/tree/master/tutorial-package-publish#android

Y consiguió este error (con la trayectoria corregida hacia fuera):

1> ANDROID_HOME=C:\Program Files (x86)\Android\android-sdk (TaskId:11) 1> JAVA_HOME=C:\Program Files (x86)\Java\jdk1.7.0_55 (TaskId:11) 1> \build.json (TaskId:11) 1> Reading build config file: \build.json (TaskId:11) 1> \platforms\android\cordova\node_modules\q\q.js:126 (TaskId:11) 1> throw e; (TaskId:11) 1> ^ (TaskId:11) 1> SyntaxError: Unexpected token  (TaskId:11) 1> at Object.parse (native) (TaskId:11) 1> at parseOpts (\platforms\android\cordova\lib\build.js:475:27) (TaskId:11) 1> at Object.module.exports.run (\platforms\android\cordova\lib\build.js:529:16) (TaskId:11) 1> at \platforms\android\cordova\build:36:22 (TaskId:11) 1> at _fulfilled (\platforms\android\cordova\node_modules\q\q.js:798:54) (TaskId:11) 1> at self.promiseDispatch.done (\platforms\android\cordova\node_modules\q\q.js:827:30) (TaskId:11) 1> at Promise.promise.promiseDispatch (\platforms\android\cordova\node_modules\q\q.js:760:13) (TaskId:11) 1> at \platforms\android\cordova\node_modules\q\q.js:574:44 (TaskId:11) 1> at flush (\platforms\android\cordova\node_modules\q\q.js:108:17) (TaskId:11) 1> at process._tickCallback (node.js:355:11) (TaskId:11) 1> Command finished with error code 1: cmd /s /c ""\platforms\android\cordova\build.bat" --release "--buildConfig=\build.json"" (TaskId:11) 1>ERROR building one of the platforms : error : cmd: Command failed with exit code 1 1> You may not have the required environment or OS to build this project (TaskId:11) 1>MDAVSCLI : error : cmd: Command failed with exit code 1 1>Done executing task "MdaVsCli" -- FAILED. (TaskId:11) 

¿Qué estoy haciendo mal? Parece que no puede analizar el JSON?

Este problema se debe a que el build.json predeterminado tiene una lista de materiales que no le gusta al analizador JSON de NodeJS. Puede solucionar esto de varias maneras, pero lo más sencillo es abrir el archivo utilizando el editor binario de Visual Studio.

Haga clic con el botón derecho en build.json, seleccione "Abrir con …", luego elija "Editor binario" en la lista. Debería ver algo como esto:

Introduzca aquí la descripción de la imagen

Seleccione los primeros tres bytes como en la captura de pantalla y elimínelos, luego guarde el archivo. El analizador ahora debe aceptar el archivo y la firma funcionará como se esperaba.

He intentado este enfoque también siguiendo la misma documentación. Y obtener exactamente el mismo error.

Después de mirar la documentación de compilación de Android , es decir, la Firma de su aplicación manualmente

Me di cuenta de que debería ser posible construir la aplicación en modo de liberación (es decir, un apk que es unsigned se genera primero), por lo que eliminado build.json y probado esto, y tengo errores. Hice algunas búsquedas de google y subí este [post] [2].

[2]: Error al ejecutar cordova construir -release android En resumen este mi consejo.

  1. Quite el archivo build.json.
  2. Limpie la solución establecida en el modo de depuración y asegúrese de que puede construir con éxito.
  3. Limpie la solución y póngala en modo de liberación.
  4. Vaya a su directorio de aplicaciones encuentre las plataformas \ android verá build.gradle.
  5. Crear un nuevo archivo build-extras.gradle, he recibido esta sugerencia de uno de los [post] [2]

    [2]: Error al ejecutar cordova build -release android no quieres editar el archivo build.gradle generado automáticamente.

  6. En tu build-extras.gradle poner android {lintOptions {disable MissingTranslation}}
  7. Ahora vaya y construya su solución, debería funcionar y obtendrá un apk no firmado, es decir, android-release-unsigned.apk en su carpeta bin \ Android \ release.
    1. Firme su apk manualmente siguiendo la construcción de android – firmando la aplicación manualmente

Además de la razón @dlev publicado encontré otra razón que podría causar esto:

Yo estaba usando una ruta de acceso que contiene los nombres de carpetas foo\bar . Esto funcionó antes, pero parece que ahora (no tengo ni idea si nodo, cordova o lo que sea actualizado) esto no funciona más y tienes que escapar del directorio seperator: foo\\bar .

Después de agregar esto, puedo construir mi proyecto de nuevo.

Otro truco es aprovechar el sistema de compilación de android. En plataformas \ android coloque su archivo keystore y dentro de su build-extras.gradle. el seguimiento

  Androide
      LintOptions {
         CheckReleaseBuilds false
         AbortOnError false
     }
     SignedConfigs {
          lanzamiento {
                 KeyAlias ​​= ""
                 KeyPassword = "yourpassword" // Y estos deben estar definidos como no vacíos para que el paso de firma se agregue al gráfico de tareas.
                 StoreFile = archivo ("yourfile.keystore")
                 StorePassword = "su contraseña"
             }
         }
         BuildTypes {
             lanzamiento {
                 SignedConfig signingConfigs.release
             }
         }
 } 

Si desea crear la ilusión de la automatización completa, entonces podría utilizar una tarea de gulp "un paso de pre-compilación" para copiar su archivo keystore y build-extras gradle archivo a plataformas \ android desde dondequiera que los tenga.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.