cocos 编译android版本遇到的问题集合一

错误如下。。。但是使用eclipse生成apk包时不收影响。。

-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,可以忽略如上问题的;感觉很不爽。。。。

-------------解决方法

注释掉project.properties文件中的#android.library.reference.1=../cocos2d/cocos/platform/android/java就可以啦!!!

时间: 2024-10-28 21:06:39

cocos 编译android版本遇到的问题集合一的相关文章

cocos编译Android版本号问题总结

今天编译cocos2d-x项目到Android平台遇到编译不通过的问题,编译错误提示是一堆乱码.主要原因有:1.文件编码格式错误 或 换行符格式错误,改动方法为,在VS2012里面选择 文件->高级保持选项,例如以下图 编码选择 中文简体(GB2312)-代码页936 ,行尾选择 Unix(LF) 2.Android.mk文件改动错误,文件名称变更后,没有及时改动Android.mk文件造成该错误,及时改动就能够了cocos编译Android版本号问题总结,布布扣,bubuko.com

Quick-Cocos2dx 3.3编译android版本

今天想上真机看看quick项目的效果,结果编译不过.    NDK,SDK,COCOS-SDK都有,但是在走NDK的build步骤时,出现了错误.编译不过.    错误为:build/core/build-binary.mk:345: *** target pattern contains no '%' stop 后来发现是因为NDK版本低了,最低需要ndk-r9d,但是我的ndk是r9的.更换了NDK,并设置了ANDROID_HOME, ANDROID_SDK_ROOT, ANDROID_ND

cocos编译java时改变使用的javac的版本

使用cocos命令编译android程序时,总是提示使用的javac是1.5版本.由于不支持diamond运算符,必须1.7以上才行. 在Cocos/frameworks/cocos2d-x-3.9/cocos/platform/android/java/build.xml里可以发现有: <import file="${sdk.dir}/tools/ant/build.xml" /> 找到此文件,查找 <property name="java.target&

如何用ccache加速cocos2d-x android版本的编译

以下步骤在MAC下测试通过: 首先是安装CCache, 可以用homebrew brew install --HEAD ccache 也可以用源码安装 git clone https://github.com/jrosdahl/ccache.git cd ccache ./autogen.sh ./configure make make install 如果提示autoheader找不到,要先装个automake brew install automake 当然,如果提示brew找不到,要先装一

WebRTC Android版本编译

本文简单介绍如何在Ubuntu18.04 上,编译WebRTC Android版本. 安装工具 需要用到dept_tools工具来下载webrtc源码. 安装 depot_tools git 命令获取 depot_tools. # git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git 配置坏境变量: # echo "export PATH=$PWD/depot_tools:$PATH" &g

Cocos Creator Android打包 apk

这一篇讲的是用 Cocos Creator 编译器打包 Android APP 的时候遇到的一些问题,虽然说打包的过程不是很复杂,但是在其中还是会遇到各式各样的坑. 我们将项目用CCC(Cocos Creator)编译器打包的时候,肯定是要先配置一下本机的开发环境,我这里主要是打包成 Android APP 的时候需要依赖的开发环境. 下载 Java SDK(JDK) 在编译 Android 工程的时候需要在本地电脑上有完整的 Java SDK 工具,如果没有这个工具可以到下面的地址下载: Ja

Ubuntu 16.04编译Android 7.1.2

折腾了很久,终于搞定了这个环境.记录一下. 准备工作: 1. 首先在Ubuntu官网上下载Ubuntu16.04的官方镜像.官网下载地址(这个找了很久,这里可以直接下载ISO镜像):https://launchpad.net/ubuntu/+cdmirrors 2. 建议直接安装到自己硬盘上(推荐双系统),不要在虚拟机上搞,除非你有足够大的SSD.我之前在虚拟机上试过,电脑的性能完全发挥不出来,后来搞了双系统,发现一切都是那么舒服. 3. Android源码下载方法:https://lug.us

Ubuntu 14.04 编译 Android 4.2.2 for Tiny4412

. . . . . 在学校里是用 Redhat 6.4 编译的 Android 4.2.2 很顺利,把源码包拷贝到笔记本上的 Ubuntu 14.04 上再编译遭遇了各种坑,所以便有了这篇博客记录解决每一个坑的过程.所幸这些坑解决起来还不算复杂,稍微 Google 一下就找到了解决方案. 1.首先是安装 JDK 和 arm-linux-gcc 工具链,这两步只是解压缩之后配置环境变量就行了,所以这里就不再赘述了. 注意 JDK 必须采用 1.6 版本的,据说 android 4.x 都需要使用标

Android Gradle编译学习日记之一(搭建 Gradle 环境以及编译 Android 应用)

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 Google 在最近正式推出了 Android Studio 1.0版本,开发者首页的默认开发工具也已经更改成了 Android Studio,我想我们是时候全面转型到 Android Studio 开发了. 其实抛开界面因素,Android Studio 与 Eclipse ADT 构建 Android