Ionic Android构建失败。

5

我初学混合开发,选择了Cordova和Ionic来开始。我正在遵循Ionic文档进行操作。但是,在创建新的Ionic项目并添加Android平台后,在尝试构建Android平台时,我一直重复失败。我已经尝试解决这个问题数天了。请帮助我,使我能够继续进行一些实际的开发。

    BUILD FAILED
    C:\android-sdk-windows\tools\ant\build.xml:962: The following error occurred while executing this line:
C:\android-sdk-windows\tools\ant\build.xml:973: The following error occurred whi
le executing this line:
C:\android-sdk-windows\tools\ant\build.xml:312: com.android.sdklib.build.ApkCrea
tionException: java.io.FileNotFoundException: C:\todo\platforms\android\ant-buil
d\classes.dex does not exist
        at com.android.sdklib.build.ApkBuilder.init(ApkBuilder.java:469)
        at com.android.sdklib.build.ApkBuilder.<init>(ApkBuilder.java:394)
        at com.android.ant.ApkBuilderTask.execute(ApkBuilderTask.java:334)
        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.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 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)
Caused by: java.io.FileNotFoundException: C:\todo\platforms\android\ant-build\cl
asses.dex does not exist
        at com.android.sdklib.build.ApkBuilder.checkInputFile(ApkBuilder.java:93
8)
        at com.android.sdklib.build.ApkBuilder.init(ApkBuilder.java:440)
        ... 62 more

Total time: 25 seconds

C:\todo\platforms\android\cordova\node_modules\q\q.js:126
                    throw e;
                          ^
Error code 1 for command: cmd with args: /s /c "ant debug -f C:\todo\platforms\a
ndroid\build.xml -Dout.dir=ant-build -Dgen.absolute.dir=ant-gen"
ERROR building one of the platforms: Error: C:\todo\platforms\android\cordova\bu
ild.bat: Command failed with exit code 8
You may not have the required environment or OS to build this project
Error: C:\todo\platforms\android\cordova\build.bat: Command failed with exit cod
e 8
    at ChildProcess.whenDone (C:\Users\com\AppData\Roaming\npm\node_modules\cord
ova\node_modules\cordova-lib\src\cordova\superspawn.js:131:23)
    at ChildProcess.emit (events.js:98:17)
    at maybeClose (child_process.js:756:16)
    at Process.ChildProcess._handle.onexit (child_process.js:823:5)

你正在使用哪个Java版本? - Karan Kumar
4个回答

4

最终我通过进入 C:\todo\platforms\android\ant-build 文件夹解决了问题,其中 todo 是我创建的ionic项目的名称,并将 classes.dex.d 文件重命名为 classes.dex


2
一般来说,在 Cordova 中,我可能会尝试使用命令行删除平台并重新添加它。
cordova platform rm android

cordova platform add android

但是,我很高兴你找到了解决方法。


1
很高兴你能够解决它!我发现做ionic android和ios构建的最简单方法是通过intel xdk。如果你已经有了一个ionic项目,你可以将其导入为intel项目,它有一个内置的设备模拟器和构建服务器。只需点击构建,它就会自动化这个过程。它还为您处理所有的配置文件,并为您提供一个漂亮的UI来编辑它们。https://software.intel.com/en-us/html5/tools

哦,那非常有用!谢谢分享。我现在就去看看! - Kaushal Kapoor

0

为解决此问题,请确保 Android SDK 已成功安装,如果是的话

1)从 cordova 项目目录返回(cd..) 2)然后进入 cordova 项目目录并使用“cordova platform add android --save --fetch”进行获取 3)如果没有出现错误,则尝试删除平台并重新添加

这对我有用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接