模块依赖导致在Android Studio中执行任务“:app:preDexDebug”时出现错误。

3
我尝试向Android项目添加一个模块,并使主模块依赖于它,结果出现了以下错误:
Error:Gradle: Execution failed for task ':app:preDexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_40\bin\java.exe'' finished with non-zero exit value 1
我的项目有一个名为“app”的主模块,我添加了一个名为“mylib”的模块,并让“app”依赖于“mylib”。
使用的是Android Studio 1.2.2。
settings.gradle:
include ':app', ':mylib'
来自app的build.gradle:
    apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "21.1.2"

    compileOptions {
        sourceCompatibility org.gradle.api.JavaVersion.VERSION_1_8
        targetCompatibility org.gradle.api.JavaVersion.VERSION_1_8
    }

...

}

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

从mylib构建gradle:

apply plugin: 'java'

sourceCompatibility = org.gradle.api.JavaVersion.VERSION_1_8
targetCompatibility = org.gradle.api.JavaVersion.VERSION_1_8

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

JAVA_HOME变量:

JAVA_HOME=C:\Program Files\Java\jdk1.8.0_40

当我在build.gradle中添加compile project(':mylib')这行代码时,出现了问题。有时候是在重建项目时出现问题,但总是在尝试运行项目时出现问题。加入VERSION_1_8语句并不能解决这个问题。

可能出了什么问题?任何帮助都将不胜感激。


“mylib” 是用于 Java 库/JAR 还是 Android 库/AAR? - emerssso
@emerssso 我的库旨在成为一个Java库/JAR,并使用文件 | 新建 | 新模块...创建。Java库 - Costello
2个回答

2

我有同样的问题,从这个纯Java单元测试教程中找到了解决方案,它说Android目前支持Java 1.7。

将纯Java单元测试添加到Android项目中

简而言之,只需将您的java lib模块设置为1.7,因此您在mylib中的build.gradle可能会像这样。

apply plugin: 'java'

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

希望这能帮到您。

我尝试了1.7版本,它可以工作。太好了。非常感谢。不过我还是有些困惑,因为我已经指定了Java版本1.7,但我正在使用Java 1.8(并且JAVA_HOME指向JDK 1.8)。无论如何,它可以工作,所以我可以继续。 - Costello
你只是告诉JDK8编译成JDK7,以使其与Android兼容。这可能成功是因为您的库不使用任何仅限于JDK8的功能。如果您的库使用了JDK8专有功能并且无法作为JDK7编译,则需要使用https://github.com/evant/gradle-retrolambda。 - swooby

0

我也遇到了同样的问题,但只需要简单的两步就解决了:

1)build -> 清理项目 2)build -> 重新构建项目


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接