使用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楼上正解
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脸摔伤后留下黑印怎么办 不确定孩子是不是老公的怎么办 孩子接种证丢了怎么办 孩子的出生证丢了怎么办 私秘边上肿了怎么办 书法作品少写一个字怎么办 炉石传说ios闪退怎么办 ck手表表链大了怎么办 天梭手表卡扣坏了怎么办 机械表平时不戴怎么办 天梭机械表慢了怎么办 手表每天慢10秒怎么办 浪琴机械表不走了怎么办 大提单号被修改了怎么办 入户中山没有三年居住证明怎么办 加拼关单号舱单信息没有怎么办 外贸中交货期晚了怎么办 履约保函到期了怎么办 续贷高校未通过怎么办 安卓手机网速慢怎么办 探探性别错了怎么办 尿酸高导致脚肿怎么办 联通光猫复位后怎么办 头部和脸部出油怎么办 vcd解码板坏了怎么办 脚崴了里面筋疼怎么办 长寿龟身上烂了怎么办 纱裙没有腰身显胖怎么办 橘子平台下载速度慢怎么办 换手机号了支付宝账号怎么办 怀孕期间脚扭了怎么办 买了临街房后悔怎么办 绝地求生困在废车里怎么办 身体出现辅助睡眠状态怎么办 扁桃体发炎喉咙痒咳嗽怎么办 电脑玩英雄杀卡怎么办 康佳冰箱显示2e怎么办 高考登陆系统登录密码错误怎么办 苹果遇到ad登录问题怎么办? 小孩2天不拉屎怎么办 20天宝宝不大便怎么办