异常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')
}
或
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就不要再引入到主项目中了。