错误信息
Error:Execution failed for task ':app:transformClassesWithDexForDevDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_71.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
问题在哪儿
1.你的项目里包含了两个相同包名的不同 project 或者 jar(包冲突了)
2.你的项目太大啦 以至于项目的methods数超过了64K(65,536 哇好多啊,项目真是够大啦)
探究一下
至于情况1,大家学习朝阳群众,擦亮心灵的窗户,YOU WILL FIND IT,大多是V4包的问题
情况2的话,认真探究起来会学到好多东西,问题的内在:build之后生产.class文件,然后SDK的dex工具会把.class文件处理成.dex文件,所有的.class文件整合到一个.dex文件里,那么问题来了,当你的项目很大,依赖的包很多时(自己开发以及所引用的Android Framework和第三方类库的代码),会挤爆.dex文件的,由于DEX文件格式限制,一个.dex文件中method个数采用使用原生类型short来索引文件中的方法,也就是4个字节共计最多表达65536个method,所以如果method方法数多于这个值,.dex文件就无法承担的起了,那怎么办啊,难道就限制了你的APP不允许太大吗?OMG ... ...
解决方案
如果你的项目在build时出现了上述的错误,OK,已经知道什么问题了,那就对症下药呗:
我查阅了好多资料,学习的别人的解决方案,受益匪浅,有些人重新build了之后就好了竟然!!还有些人把AS关了在打开就OK了竟然!!有两个博客帮了我很多,地址我贴到下面了,接下来就直接说解决方案了,应该说是Google的解决方案,他们也意识到这个问题,然后就开发了一个jar包,compile 'com.android.support:multidex:1.0.0',得依赖一下啊,这个包就是专门来解决我们这个问题的,感谢苍天和Google,看包名"multidex",什么意思呢?我就直直的翻译一下--多个dex文件,哦,那一切就明了了,不能再解释了,会被骂的
那我就直接说步骤吧,如果是情况2的话,跟着做就好
一:先依赖上面那个包 compile'com.android.support:multidex:1.0.0'
Second:在你的defaultConfig里添加multiDexEnabled true这句话
3.在你的AndroidManifest.xml文件Application标签中添加android:name="android.support.multidex.MultiDexApplication">如果你的应用程序继承 Application , 那么你需要继承 MultiDexApplication
那就这样吧,再爱都曲终人散了
推荐歌曲 ——《刀剑如梦》小时候的武侠回忆
http://blog.csdn.net/ljx19900116/article/details/49923647
https://www.contentful.com/blog/2014/10/30/android-and-the-dex-64k-methods-limit/