为什么80%的码农都做不了架构师?>>>   

今天在将一个开源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

转载于:https://my.oschina.net/1pei/blog/478968

AS问题解决系列1—Unable to execute DX错误相关推荐

  1. Android项目Build报错Unable to execute dx(65535问题解决方案)

    2019独角兽企业重金招聘Python工程师标准>>> 问题描述:Android项目引入过多的第三方包时,在编译成dex文件的时候,单个dex文件中的方法总数超过了65535个,此时 ...

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

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

  3. 【Android笔记】Unable to execute dex: Multiple dex files define 解决方法

    问题:项目里经常需要添加第三方jar包,加入新的jar包后编译时可能报错Unable to execute dex: Multiple dex files define. 我的报错信息如下: 1 [2 ...

  4. pip install faiss-gpu失败unable to execute ‘swig‘: No such file or directory

    1. 安装报错 unable to execute 'swig': No such file or directory error: command 'swig' failed with exit s ...

  5. Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;

    Unable to execute dex: Multiple dex files define Lcom/myapp/R$array; 我这个问题最后解决方式是,吧工程里面用同一个v4包. 很明显, ...

  6. unable to execute clang-tidy

    android ndk开发时,报错: unable to execute clang-tidy 提示 open settings,把确认的√去掉,就可以了报错临时去掉.

  7. eclipse运行时出现Unable to execute dex

    eclipse在运行工程的时候费时很久,且报了Unable to execute dex的错误,查找了很多原因,最终解决. 是因为我的工程引入了一个jar包(libs目录下),该jar包引用了其他ja ...

  8. 【Android-tips】 Unable to execute dex: Multiple dex files define 解决方法

    唔,之前已经想过今后不动android,没想到还是因为比赛的原因重操旧业.android有很多问题是由于eclipse的不完善造成的,比如今天遇到的这个问题 Unable to execute dex ...

  9. Unable to execute dex: Multiple dex files define异常的解决办法

    问题: 1 [2016-01-06 16:47:58 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/s ...

最新文章

  1. 开源库OpenNMT-py使用记录
  2. 5G时代即将来临,三大运营商各自为营谁能抢占先机?
  3. 读书笔记 --- [基础知识点] 小结2
  4. leetcode 485. 最大连续1的个数
  5. LeetCode 375. 猜数字大小 II(DP)
  6. 以系统化视角反观产品运营,解读提升用户转化的“四部曲”
  7. Exponential notation 思维题
  8. 2016计蒜之道复赛 百度地图的实时路况 floyd+cdq分治
  9. 竞赛获奖系统解读:远场说话人确认中基于两阶段迁移学习解决域不匹配问题
  10. 大学计算机基础方案一,《大学计算机基础》实验实施方案-学生用汇.docx
  11. 全栈工程师如何逆袭?
  12. Solidworks机构运动仿真
  13. 阿姆达尔定律 是什么 Amdahl 并行效率计算经验法则
  14. 怎么使用Git远程删除某个历史提交记录
  15. ie11 Object doesn't support property or method 'attachEvent'
  16. 科学:只要国家做媒撮合他们俩,我国科技发展必定如虎添翼,赶英超美!
  17. 页面的颜色搭配【含外卖APP的颜色介绍】
  18. Word引用参考文献批量设置为上标
  19. android实现来电动画,华为来电动画app-华为来电动画(透明来电秀)安卓版-幻想游戏网...
  20. 二极管反向恢复时间测试仪电脑程控测试系统智能识别示波器曲线演示分析

热门文章

  1. 计算机科学与技术年会,2017年全国理论计算机科学学术年会在武汉召开
  2. vb.net限制datagridview不能选择_家里安装200兆宽带,网速还是很慢怎么办?教你一招解除网速限制...
  3. 微信小程序点击页面tab栏切换
  4. mysql 查询字段语句_mysql查询语句常用字段操作函数
  5. php 类 静态调用 实例化 效率,php类的静态调用和实例化调用有哪些不同点?
  6. less加管道tail_linux中cat、more、less、tail、head命令的区别
  7. c++冒泡排序代码_C/C++基础之冒泡排序
  8. python转csv_python如何将列表存储为csv文件
  9. 【编程之美】24点游戏
  10. 【数学与算法】【分段三次Hermite插值】和【分段三次样条插值】