无法通过visual studio cordova构建签名的android包

时间:2015-09-02 11:45:23

标签: android cordova visual-studio-2015 visual-studio-cordova

我正在尝试使用Visual Studio 2015 Cordova Tools为我的Android应用程序构建一个签名发布包。 我使用的是Cordova 5.1.1,它要求我使用build.json文件提供构建过程,告诉应用程序密钥库的位置以及使用的密码。 但是,当我添加build.json文件时,我无法成功发布版本。

我遵循了这个指南:https://github.com/Microsoft/cordova-docs/tree/master/tutorial-package-publish#android

得到此错误(路径已修改完毕):

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)

我做错了什么?好像它无法解析JSON?

3 个答案:

答案 0 :(得分:48)

导致此问题是因为默认的build.json具有NodeJS JSON解析器不喜欢的BOM。您可以通过多种方式解决此问题,但最简单的方法是使用Visual Studio的二进制编辑器打开文件。

右键单击build.json,选择"打开方式...",然后选择"二进制编辑器"从列表中。你应该看到这样的东西:

enter image description here

选择屏幕截图中的前三个字节,然后删除它们,然后保存文件。解析器现在应该接受该文件,并且签名将按预期工作。

答案 1 :(得分:1)

我也按照相同的文档尝试了这种方法。并得到完全相同的错误。

查看android build documentation后,即手动签署您的应用

我意识到应该可以在发布模式下构建应用程序(即第一个生成无符号的apk),所以我删除了build.json并尝试了这个,我得到了错误。我做了一些谷歌搜索,并提出了这个[帖子] [2]。

[2]:Error when running cordova build –release android总之这是我的建议。

  1. 删除build.json文件。
  2. 清理解决方案,将其设置为调试模式,并确保您可以成功构建。
  3. 清理解决方案,将其设置为释放模式。
  4. 转到您的应用程序目录查找platforms \ android,您将看到build.gradle。
  5. 创建一个新文件build-extras.gradle,我从[post] [2]上的其中一个获得了这个建议

    [2]:Error when running cordova build –release android您不想编辑自动生成的build.gradle文件。

  6. 在你的build-extras.gradle中输入 android {lintOptions { 禁用MissingTranslation }
  7. 现在开始构建您的解决方案,它应该可以工作,并且您将在bin \ Android \ release文件夹中获得一个未签名的apk,即android-release-unsigned.apk。
    1. 按照android build - signing your app manually steps
    2. 手动签署您的apk

答案 2 :(得分:0)

除了@dlev发布的原因,我发现了另一个可能导致这种情况的原因:

我使用的是包含文件夹名称foo\bar的路径。这之前有用,但现在看来(我不知道node,cordova或其他什么都得到了更新)这不再起作用了,你必须逃离目录分隔符:foo\\bar

添加后,我可以再次构建我的项目。