Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException

异常Log:

Error:Execution failed for task ‘:app:dexDebug’.

> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘/Library/……/java” finished with non-zero exit value 2

错误原因:

这个异常在Android Studio编译执行的时候出现。原因是项目中引用了反复的jar包。这可能是由于新引入的library module中有和主项目中反复引用的jar包,须要重点检查 Android 兼容包 support-v4support-v7 包。另一些经常使用的开源项目。比如Gson,Nineoldandroids…,这些经常使用的开源项目有可能在你引用的 library 项目中已经被引用过了。

解决的方法:

解决问题我们仅仅须要删除主项目中 libs 文件夹中和 library中反复的部分就可以,另外,我推荐大家改变将 jar 包放在 libs 文件夹中的习惯,而使用 Gradle 构建。在 module 下的 build.gradle 文件夹下将

dependencies {
compile files('libs/nineoldandroids-2.4.0.jar')
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}

改为

dependencies {
compile 'com.nineoldandroids:library:2.4.0'
}

參考链接中,我发现一个相似的异常

Error:Execution failed for task ‘:app:dexDebug’.

> com.android.ide.common.internal.LoggedErrorException

出现这个错误是由于主项目和Library项目中都引用了 compile ‘com.nineoldandroids:library:2.4.0’ ,但我在最新的 Android Studio 1.3 Preview 和 Gradle 2.3中给主项目和Library项目进行了一次模拟。却没有出现该异常,依据问题中给出了 build.gradle 文件,这可能是由于使用了低版本号Android Studio 或 Gradle 的缘故,所以大家不妨在项目中检查一下。library项目中已经引入的jar,library就不要再引入到主项目中了。

參考链接:

http://*.com/questions/27675717/gradle-error-execution-failed-for-task-appdexdebug/27675841

上一篇:Python dict 按键和值排序


下一篇:Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用