错误:Gradle:执行任务“: app:preDexDebug”失败

10

我将另一个项目中自己创建的jar作为库导入到我的另一个项目中。当我更改该项目中的代码并导出新的jar来替换旧的jar时,我的应用程序无法运行。我只收到以下错误:

输入图像描述

我尝试过删除、添加和添加依赖项、添加库,但似乎没有任何效果。我也进行了清理构建和重建。


图片无法显示。 - Green goblin
J2SE 8 = 52(0x34 hex),因此我认为存在Java 8代码。您能否确保您正在使用Java 7和/或针对Java 7进行了目标设置? - ditkin
4个回答

25

我们在过去的项目中遇到过这个问题,当时我们的项目使用的Java版本与编译库所用的版本不同。魔数仅用于识别类文件,因此这里并非问题所在。问题是Java版本(0034.0000 == Java 8)。

最简单的解决方法是针对Java 6进行目标设置,这可能需要从代码中删除较新的语法。在我们的情况下,项目和库都是我们自己的,因此我们能够添加以下内容来强制使用我们所需的Java版本:

Android库

对于Android库,请将以下代码添加到“android”扩展对象中:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }
    ...
}

Java库

对于Java库,将以下代码添加到“顶层”:

apply plugin: 'java'

version '1.8.1'
group   'com.yourcompany.package'

sourceCompatibility = JavaVersion.VERSION_1_6   //these two lines
targetCompatibility = JavaVersion.VERSION_1_6   //are the only ones that matter

注意:最后两行是唯一重要的,我添加了其他行只是为了展示这些行与你的gradle构建文件的其余部分的关系。

1
对于我们来说,这是由于Android SDK构建工具版本引起的。在v23.x上遇到了问题,但在v22.x上没有。您需要卸载v23,让cordova选择v22。
可能是一种症状而不是原因,但这可能会帮助处于同样情况下的人。

或许那时候的情况不同了。 - Strawberry

0

添加:

sourceCompatibility = JavaVersion.VERSION_X_X
targetCompatibility = JavaVersion.VERSION_X_X

在 Android 项目 gradle 文件和 Java 库 gradle 文件中进行的操作对我有效。

抱歉,我想点赞,但是我的声望不够高。


0

虽然你的问题似乎已经解决了,但我在构建 developer.android.com 上的示例时遇到了类似的错误。如果对其他人有帮助,我通过将 JAVA_HOME 设置为适当的值来解决它。在我的情况下,它是:

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64

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