异常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-v4 和 support-v7 包,还有一些常用的开源项目,例如Gson,Nineoldandroids…,这些常用的开源项目有可能在你引用的 library 项目中已经被引用过了。
解决办法:
解决这个问题我们只需要删除主项目中 libs 文件夹中和 library中重复的部分即可,另外,我推荐大家改变将 jar 包放在 libs 目录中的习惯,而使用 Gradle 构建,在 module 下的 build.gradle 目录下将
dependencies {
compile files('libs/nineoldandroids-2.4.0.jar')
}
- 1
- 2
- 3
或
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
- 1
- 2
- 3
改为
dependencies {
compile 'com.nineoldandroids:library:2.4.0'
}
- 1
- 2
- 3
在参考链接中,我发现一个类似的异常
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