Android Studio 2.1:将字节码转换为dex时出错。

10

自从我将Android Studio升级到2.1版本以后,我一直遇到以下错误:

Error:Error converting bytecode to dex:

Cause: Dex无法解析版本为52的字节码。这是由已经使用Java 8或更高版本编译的库依赖项引起的。如果您在一个库子模块中使用了'java'gradle插件,请在该子模块的build.gradle文件中添加targetCompatibility = '1.7' sourceCompatibility = '1.7'。

我尝试将以下片段添加到build.gradle中,但问题仍然存在。

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

我看到了一些类似的问题,但是这些问题都没有得到解答。有人能帮我解决吗?先谢谢了。


你的项目中有任何仅限于Java的模块吗? - Eduard B.
不,我没有使用任何这样的模块。我通过用旧的SDK替换新的来解决了这个问题。现在工作室运行良好。 - Suresh Kumar
你替换了哪个SDK来解决这个问题?请问你能解释一下你是如何解决的吗? - Adi
@Adi 我用更新最新的SDK之前的旧版SDK替换了它。我有旧版SDK的备份。 - Suresh Kumar
3个回答

33

尝试

allprojects {
    tasks.withType(JavaCompile) {
        sourceCompatibility = "1.7"
        targetCompatibility = "1.7"
    }
}

在主要的 build.gradle 文件中


节省了我几个小时的痛苦。谢谢! - Adrian
运行得很好!谢谢。 - Ugurcan Yildirim
1
对我来说不起作用! 我正在尝试使用iText创建和加密PDF文件,但是我得到了相同的错误。 @sbeliakov - Akash Dubey

2

从build.gradle中移除依赖项,注释相关代码,然后编译和清理项目。

在成功清理后,再次添加依赖项,并取消注释之前移除依赖项时所注释的内容。


1
可能是Android: Dex无法解析版本52字节码的重复问题。最常引用的答案为我解决了这个问题。
我在我的build.gradle中添加了如下的compileOptions和jackOptions来使用JDK 1.8。
android {
    ...
    defaultConfig {
        ...        
        jackOptions {
            enabled true
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

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