使用cocos compile -p android时总是报错误 错误如下。。。但是使用eclipse生成apk包时不收影响。。
来源:互联网 发布:精乌胶囊知乎 编辑:程序博客网 时间:2024/06/05 13:26
-dex:
[dex] input: E:\cocos\Mine\frameworks\runtime-src\proj.android\bin\classes
[dex] input: E:\cocos\Mine\frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar
[dex] Pre-Dexing E:\cocos\Mine\frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar -> classes-022efb48739f8be18b60e7464733537d.jar
[dex] Converting compiled files and external libraries into E:\cocos\Mine\frameworks\runtime-src\proj.android\bin\classes.dex...
[dx]
[dx] UNEXPECTED TOP-LEVEL EXCEPTION:
[dx]com.android.dx.util.DexException: Multiple dex files define Lorg/cocos2dx/lib/Cocos2dxAccelerometer;
[dx] at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
[dx] at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
[dx] at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
[dx] at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
[dx] at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
[dx] at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
[dx] at com.android.dx.command.dexer.Main.run(Main.java:232)
[dx] at com.android.dx.command.dexer.Main.main(Main.java:174)
[dx] at com.android.dx.command.Main.main(Main.java:91)
[dx]
BUILD FAILED
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:892: The following error occurred while executing this line:
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:894: The following error occurred while executing this line:
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:906: The following error occurred while executing this line:
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:284: null returned: 2
---------------------------
查资料发现,发现:
cocos compile 的脚本里会自动把“frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar”(2dx的java代码)添加到classes.dex中。
而当用eclipse打开android项目时,默认是没有引入2dx的java类的,此时如果想正常运行android项目,需要引入2dx的jar包,或者引入2dx的java源码。
如果引入java的源码,当再次执行“cocos compile”时,2dx的java源码生成的class文件,会跟默认引入的“frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar”发生冲突,会报“com.android.dx.util.DexException: Multiple dex files define ……”的错误;
如果不引入java源码,而是直接在“Build path”中引入了jar包(位于引擎的:frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\下的classes.jar),此时android的项目不报错了,但是直接使用eclipse生成apk包时会发现安装到手机上无法运行,这是因为项目需要的2dx文件没有被打入到apk中。此时,可以将对应的jar包放到android项目的libs目录里(frameworks\runtime-src\proj.android\libs\),这样生成的apk包就可以正常运行了。
但是,如果这样做了,再次执行“cocos compile”时,发现还会报如上的错误,这是因为脚本里会默认将libs目录里的文件添加到classes.dex中。
综上所述:
出现如上错误的原因是在使用“cocos compile”脚本时,2dx文件被重复添加了。
不过,如果像我这样操作,使用“cocos compile”编译脚本(主要是因为该脚本会将js文件和资源拷贝的android项目里),使用eclipse将android项目打包成apk,可以忽略如上问题的;感觉很不爽。。。。
向兵2014-08-19 15:45注释掉project.properties文件中的#android.library.reference.1=../cocos2d/cocos/platform/android/java就可以啦!!!
阿标哈哈哈d2014-09-19 09:58楼上正解
[dex] input: E:\cocos\Mine\frameworks\runtime-src\proj.android\bin\classes
[dex] input: E:\cocos\Mine\frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar
[dex] Pre-Dexing E:\cocos\Mine\frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar -> classes-022efb48739f8be18b60e7464733537d.jar
[dex] Converting compiled files and external libraries into E:\cocos\Mine\frameworks\runtime-src\proj.android\bin\classes.dex...
[dx]
[dx] UNEXPECTED TOP-LEVEL EXCEPTION:
[dx]com.android.dx.util.DexException: Multiple dex files define Lorg/cocos2dx/lib/Cocos2dxAccelerometer;
[dx] at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
[dx] at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
[dx] at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
[dx] at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
[dx] at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
[dx] at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
[dx] at com.android.dx.command.dexer.Main.run(Main.java:232)
[dx] at com.android.dx.command.dexer.Main.main(Main.java:174)
[dx] at com.android.dx.command.Main.main(Main.java:91)
[dx]
BUILD FAILED
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:892: The following error occurred while executing this line:
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:894: The following error occurred while executing this line:
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:906: The following error occurred while executing this line:
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:284: null returned: 2
---------------------------
查资料发现,发现:
cocos compile 的脚本里会自动把“frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar”(2dx的java代码)添加到classes.dex中。
而当用eclipse打开android项目时,默认是没有引入2dx的java类的,此时如果想正常运行android项目,需要引入2dx的jar包,或者引入2dx的java源码。
如果引入java的源码,当再次执行“cocos compile”时,2dx的java源码生成的class文件,会跟默认引入的“frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar”发生冲突,会报“com.android.dx.util.DexException: Multiple dex files define ……”的错误;
如果不引入java源码,而是直接在“Build path”中引入了jar包(位于引擎的:frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\下的classes.jar),此时android的项目不报错了,但是直接使用eclipse生成apk包时会发现安装到手机上无法运行,这是因为项目需要的2dx文件没有被打入到apk中。此时,可以将对应的jar包放到android项目的libs目录里(frameworks\runtime-src\proj.android\libs\),这样生成的apk包就可以正常运行了。
但是,如果这样做了,再次执行“cocos compile”时,发现还会报如上的错误,这是因为脚本里会默认将libs目录里的文件添加到classes.dex中。
综上所述:
出现如上错误的原因是在使用“cocos compile”脚本时,2dx文件被重复添加了。
不过,如果像我这样操作,使用“cocos compile”编译脚本(主要是因为该脚本会将js文件和资源拷贝的android项目里),使用eclipse将android项目打包成apk,可以忽略如上问题的;感觉很不爽。。。。
向兵2014-08-19 15:45注释掉project.properties文件中的#android.library.reference.1=../cocos2d/cocos/platform/android/java就可以啦!!!
阿标哈哈哈d2014-09-19 09:58楼上正解
0 0
- 使用cocos compile -p android时总是报错误 错误如下。。。但是使用eclipse生成apk包时不收影响。。
- 使用cocos compile -p android时总是报错误 BUILD FAILED \ant\build.xml:892
- 使用cocos compile -p android -m release 报错
- 装了eclipse ,但是安装ADT的时候,报错,错误内容如下
- 没有错误,但是eclipse的clean不自动生成apk的解决办法
- 关于使用eclipse进行编译时总是有javascript validator错误提示
- 使用eclipse的maven项目时,没有错误,但是就是各种异常【解决办法】
- 使用tensorflow serving 启动模型时,报如下错误:The TensorFlow library wasn't compiled to use SSE4.1 instructions
- Servlet运行时总是报500错误
- linux 使用yum是提示如下错误
- git pull 报如下错误
- 启动OracleDBCOnsoleorcl报如下错误
- maven 使用命令package或者compile报错 错误: 需要class, interface或enum
- 使用eclipse时,jvm错误
- 【cocos2d-x 3.x 学习与应用总结】4: 使用cocos compile编译apk
- Eclipse 启动时报如下错误
- Cocos移植apk时出现的extra qualification错误
- 我在eclipse中启动Tomcat8.5之后,运行项目下的JSP文件,总是报404错误,但是访问http://localhost:8080/地址却可以正常访问
- Java Web开发之详解JSP
- Prototype模式
- spring中操作mysql数据库
- Android中Application类用法
- php使用事务 转载
- 使用cocos compile -p android时总是报错误 错误如下。。。但是使用eclipse生成apk包时不收影响。。
- 实验:基于cancel的不完全恢复
- 运维的开始
- Javascript异步编程的4种方法
- DettachCurrentThread使用情况
- jQuery源码分析系列
- 10月域名注册价格调查 .cn跌至12元
- com.microsoft.tfs.sdk-11.0.0运行报错nativeGetEnvironmentVariable(Ljava/lang/String;)Ljava/lang/String
- javadoc注释规范