http://my.oschina.net/1pei/blog/478968

摘要 在将一个开源Android代码import到Android Studio 1.2.2中时,解决了编译期间出现的“Unable to execute DX(Multiple dex files define)”问题,并学习了DX工具在应用程序编译期间所起的作用。

今天在将一个开源Android代码import到Android Studio 1.2.2中,在编译期间出现一个“Unable to execute DX”的编译错误,错误类型是“Multiple dex files define”,具体错误信息见下图:

原因:该project包含好几个module,在源代码被import到Android Studio时,在根目录下自动生成了.idea/libraries文件夹,其中有两个xml文件,

每个xml文件中都包含有下面类似的name为libraryTable的component:

这两个xml的目的就是指定项目需要包含的sdk或libs中的jar包。当项目在build的时候,两个相同的jar都被打包到dex文件中,编译器搞不定,就出了这么个错误了。

解决的办法也比较简单:将其中一个xml文件删除,只保留一个xml文件,这样项目build就顺利通过了。

后记:根据[3],这个.idea目录下的文件是用于保存IntelliJ IDEA的设置,当设置修改后这里的文件应当会有变化。

那么,什么是DX呢?参考[4]以及本地Android Studio安装路径有以下总结:

DX工具将Java class文件转换为一个.dex (Dalvik Executable)文件。

dx.jar工具所在的目录:Android/sdk/build-tools/22.0.1/lib

dx.bat所在的目录:Android/sdk/build-tools/22.0.1/lib

DX工具在Android中是做什么用的?

Java源文件可通过Java编译器转换为Java class文件。

dx工具将Java class文件转换为一个.dex (Dalvik Executable)文件。应用程序的所有class文件都放在这个.dex文件中,在转换过程中class文件中的冗余信息被优化掉。例如,在不同的class文件中如果有相同的String,那么.dex文件只包含这个String的一个引用。因此.dex文件要比对应的class文件要小。

.dex文件与Android项目中的资源,例如图片资源,XML文件等, 被打包到一个.apk (Android Package)文件中。

Android编译过程可参见下图:

上图中的aapt (Android Asset Packaging Tool) 将创建apk, 最终的.apk文件包含应用程序执行所有必要的数据,可通过ADB(Android Device Bridge)工具来部署,见下图。

参考资料

[1] Android项目Build报错:Unable to execute DX, http://www.baidufe.com/item/976bc16ceb9b4ab5507c.html

[2] Unable to execute DX(Multiple dex files define), http://www.baidufe.com/item/09a352cc9829270660ba.html

[3] Managing Projects Overview, https://developer.android.com/intl/zh-cn/tools/projects/index.html

[4] Android dx tool, http://stackoverflow.com/questions/8487268/android-dx-tool

[5] Building and Running Overview, http://developer.android.com/intl/zh-cn/tools/building/index.html

AS问题解决系列1—Unable to execute DX错误的更多相关文章

  1. IntelliJ IDEA 出现Unable to execute DX 问题

    最近从eclipse转移到IDEA上写代码的时候,无意间发现一个让我头疼不已的问题,message报错为 Error:Android Dex: [**] Unable to execute DX Er ...

  2. Conversion to Dalvik format failed: Unable to execute dex

    最近莫名奇妙遇到“Conversion to Dalvik format failed: Unable to execute dex”错误,stackoverflow以后得到结果 把项目中classp ...

  3. Android Unable to execute dex: method ID not in [0, 0xffff]: 65536 问题解决方法

    开始一个新项目的时候,Build工程的时候一直报这个错误: 控制台报错误:Conversion to Dalvik format failed: Unable to execute dex: meth ...

  4. 用Eclipse运行Android版APP(PhoneGap)时出现:Unable to execute dex: Multiple dex files define

    这两天遇到点小问题,做个记录: 症状:运行,调试时都报:Unable to execute dex: Multiple dex files define错误,发布后的APP安装到手机后一运行,就提示: ...

  5. 【转】Unable to execute dex: Java heap space 解决方案(如何为eclipse.int 添加内存)

    原文网址:http://blog.csdn.net/zengyangtech/article/details/7003379 欢迎转载,转载请注明 http://blog.csdn.net/zengy ...

  6. Error处理:Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack tra

    [2014-04-20 20:59:23 - MyDetectActivity] Dx  trouble writing output: already prepared [2014-04-20 20 ...

  7. Unable to execute dex:Multuple dex files define 解决方法

    困扰我两天的问题终于解决了,在网上查的方法无非有三种 一. Eclipse->Project->去掉Build Automatically->Clear ->Build Pro ...

  8. Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ...

    Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ... 这个错误是因为有两个相 ...

  9. 导入项目时,有关[2016-04-03 20:38:02 - Dex Loader] Unable to execute dex: Multiple dex files 问题

    最近我在学习androidUI设计,在网上找了一个UI菜单界面开源代码示例,按照步骤导入项目,运行的时候控制台结果报了如下错误: [2016-04-03 20:38:02 - Dex Loader] ...

随机推荐

  1. python学习笔记七--数据操作符

    一.Python表达式操作符及程序:

  2. python学习笔记一--字符串

    一.字符串: (一)字符串里单个元素的操作 1. 单个字符(元素)的序列组合. 2. 序列:单个字符的位置 3. 序列的操作:内置函数len获取长度,加位置索引 4. 获取字符串的里的元素:正向索引+ ...

  3. eclipse myeclipse zend studio 中去掉双引号中的斜体

    去windows/preferences 菜单里,选Web/JSP Files/Editor/Syntax Coloring 在右边选Attribute Values ,把Italic的钩去掉就好了.

  4. 【HDOJ】1648 Keywords

    PE的注意,如果没有满足条件的不输出空格.简单模拟,暴力解. /* */ #include <iostream> #include <sstream> #include < ...

  5. 将OutLook.exe注册为服务,让其一直保持开启状态

    类似于TaobaoProtect.exe是由TBSecSvc服务启动的 http://stackoverflow.com/questions/3582108/create-windows-servic ...

  6. poj3034Whac-a-Mole(dp)

    链接 状态转移好想 不过有坑 大家都犯的错误 我也会犯 很正常 就是锤子可以移到n*n以外  要命的是我只加了5 以为最多不会超过5  WA了N久  才想到 上下两方向都可以到5 所以最多加10 以时 ...

  7. poj3月题解

    poj2110 二分答案+bfs判定 poj2112 二分答案+最大流判定(二分答案真乃USACO亲儿子) poj1986 裸的LCA,值得注意的是,树中任意两点的距离可以等于这两点到根的距离减去2* ...

  8. 使用C#创建计划任务(How to create a Task Scheduler use C# )

    本文主要讲解了如何使用C#来创建windows计划任务. 需求:在不定时间段运行多个后台程序(winfrom,wpf,console,等等)用于更新数据.  问题:为什么要使用计划任务,而不直接在程序 ...

  9. 【转】Parallels Desktop 11.2.0 破解版 最佳Mac虚拟机软件

    原文网址:http://www.macappstore.net/parallels-desktop-11-pojie-ban/ Parallels Desktop 11.2.0 破解版 最佳Mac虚拟 ...

  10. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...