錯誤信息
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/