【问题标题】:cordova fails with exit code 2科尔多瓦失败,退出代码为 2
【发布时间】:2014-05-18 23:51:20
【问题描述】:

我正在构建一个 ionic/angularjs/phonegap 应用程序。我是前端开发的新手。我有一个 package.json 和一个 bowser.json。在 package.json 中,安装包后,我运行“bower install”来安装所有 bower 依赖项。我能够在 www 中运行 python 服务器并在 chrome 中查看应用程序。但是,我无法在 android 模拟器中运行。有人可以指导我吗?

编辑

在发布这个问题后,我意识到 ionic 已经附带 angular,我应该使用它。也不需要引导程序,因为 ionic 是我需要的框架。只需要下划线。我会把它清理干净。但我认为这与错误无关。

这是运行“cordova build”后的错误:

BUILD FAILED
k:\android\sdk\tools\ant\build.xml:932: The following error occurred while execu
ting this line:
k:\android\sdk\tools\ant\build.xml:950: java.lang.ArrayIndexOutOfBoundsException
: 1
        at com.android.ant.DependencyGraph.parseDependencyFile(DependencyGraph.j
ava:180)
        at com.android.ant.DependencyGraph.<init>(DependencyGraph.java:54)
        at com.android.ant.SingleDependencyTask.initDependencies(SingleDependenc
yTask.java:87)
        at com.android.ant.AaptExecTask.execute(AaptExecTask.java:509)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
        at com.android.ant.IfElseTask.execute(IfElseTask.java:124)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.jav
a:396)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:435)
        at org.apache.tools.ant.Target.performTasks(Target.java:456)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe
cutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
        at org.apache.tools.ant.Main.runBuild(Main.java:851)
        at org.apache.tools.ant.Main.startAnt(Main.java:235)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Total time: 4 seconds
Error code 1 for command: cmd with args: /s,/c,ant,debug,-f,k:\tmp\angularToDo\p
latforms\android\build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen
Error: cmd: Command failed with exit code 2
    at ChildProcess.whenDone (c:\Users\IBM_ADMIN\AppData\Roaming\npm\node_module
s\cordova\src\superspawn.js:112:23)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:743:16)
    at Process.ChildProcess._handle.onexit (child_process.js:810:5)

Package.json

{
  "name": "ionic-project",
  "version": "1.0.0",
  "description": "An Ionic project",
  "dependencies": {
    "gulp": "^3.5.6",
    "gulp-sass": "^0.7.1",
    "gulp-concat": "^2.2.0",
    "gulp-minify-css": "^0.3.0",
    "gulp-rename": "^1.2.0",
    "karma": "~0.10",
    "protractor": "~0.17.0",
    "bower": "^1.3.1"
  },
  "scripts": {
    "postinstall": "bower install"
  }
}

Bower.json(我是从 angularjs 种子项目中得到的)

{
  "name": "angular-seed",
  "description": "A starter project for AngularJS",
  "version": "0.0.0",
  "homepage": "https://github.com/angular/angular-seed",
  "license": "MIT",
  "private": true,
  "dependencies": {
    "angular": "1.2.x",
    "angular-route": "1.2.x",
    "angular-loader": "1.2.x",
    "angular-mocks": "~1.2.15",
    "bootstrap" : "3.1.1",
    "underscore" : "1.6.0"
  }
}

【问题讨论】:

  • phonegap run android 中间不幸断电后,我遇到了同样的错误,设备通过 USB 连接。

标签: cordova ionic-framework


【解决方案1】:

该错误似乎是由在完成之前中止的构建导致的,从而使项目处于不一致的状态。

如果您没有自定义平台代码,只需:

rm -r platforms/android/
phonegap run android

请注意,如果您使用的是版本控制工具,则可以轻松恢复您的平台(已提交)更改:

git checkout platforms/android/

【讨论】:

  • 如果我有平台依赖怎么办,rm -r 需要什么构建子目录?在此先感谢...
    有干净的选择吗?科尔多瓦运行 android -clean
  • 是的,我找了类似的东西,甚至直接在android文件夹中尝试了ant目标,但没有骰子。由于我没有任何特定于 Android 的更改,因此我对错误进行了核对。
【解决方案2】:

@givanse - 我回答了我自己的问题,所以如果你有平台依赖项(意思是你不想在平台/android 中松散的代码),那么为了做一个干净的构建,我做了:

rm -r platforms/android/ant-build
rm -r platforms/android/assets

现在一切都很好。谢谢。

【讨论】:

  • 只有清除platforms/android/ant-build也有效。无论如何:+1:
【解决方案3】:

这是正确的>>>>>>>> 这是由cordova中的编译中断引起的,如下所示:

构建失败

~\sdk\tools\ant\build.xml:932: The following error occurred while executing this line:
~\sdk\tools\ant\build.xml:950: java.lang.ArrayIndexOutOfBoundsException: 1
        at com.android.ant.DependencyGraph.parseDependencyFile(DependencyGraph.java:180)
        at com.android.ant.DependencyGraph.<init>(DependencyGraph.java:54)
        at com.android.ant.SingleDependencyTask.initDependencies(SingleDependencyTask.java:87)
        at com.android.ant.AaptExecTask.execute(AaptExecTask.java:509)

Error: ~\platforms\android\cordova\run.bat: Command failed with exit code 8
    at ChildProcess.whenDone (~npm\node_modules\cordova\node_modules\cordova-lib\src\cordova\superspawn.js:135:23)

您可以通过将 ~\platforms 文件夹重命名为其他名称(或将其删除)然后在 cmd 中运行来修复它

cordova platform add android

然后

cordova run android

【讨论】:

    【解决方案4】:

    升级后版本发生在我身上,经过一番谷歌搜索后,我找到了删除平台然后使用新 CLI 重新添加它的最佳解决方案:

    cordova platform remove PLATFORM
    cordova platform add PLATFORM
    

    那么构建成功

    【讨论】:

      【解决方案5】:

      如果你仔细阅读你会得到提示的消息。它正在您的 android-sdk 目录中寻找 android.bat,因此您只需复制 android.bat 的位置并将其放入您的环境 windows 路径中。

      您可能还会收到退出错误“1”,这是因为您更改或更新了 java 目录,因此,请将 java\bin 目录添加到您的环境路径。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 2015-09-08
        相关资源
        最近更新 更多