当前位置: 首页 > 知识库问答 >
问题:

Android:Dex无法解析版本52字节代码

和飞翔
2023-03-14

我刚切换到Android Studio 2.1,在尝试编译之前运行的应用程序时出现了以下错误:

Error:Error converting bytecode to dex:
Cause: Dex cannot parse version 52 byte code.
This is caused by library dependencies that have been compiled using Java 8 or above.
If you are using the 'java' gradle plugin in a library submodule add 
targetCompatibility = '1.7'
sourceCompatibility = '1.7'
to that submodule's build.gradle file.

我已经更新了主项目的gradle。生成文件以强制生成Java 1.7代码:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        apply plugin: 'java'
        sourceCompatibility = 1.7
        targetCompatibility = 1.7
    }
}

我还更新了gradle模块。按如下方式构建以设置java版本:

android {
compileSdkVersion 19
buildToolsVersion "23.0.2"

defaultConfig {
    applicationId "com.abc.def"
    minSdkVersion 19
    targetSdkVersion 19
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
}

正在使用Maven构建子模块。在pom.xml文件中,我还尝试强制生成1.7代码。
我知道我正在使用一个组装工件,它包含了从属模块,但我没有更改任何从属模块,并且上次编译时该模块的结果. jar文件运行良好。

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId> <!-- maven-compiler-plugin -->
            <version>2.6</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target> 
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id> <!-- this is used for inheritance merges -->
                    <phase>package</phase> <!-- bind to the packaging phase -->
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我的问题:1)这是Android Studio 2.1的问题吗?其他人看到了吗?2) 假设这是我的错误,并且由于错误消息对查找错误模块没有帮助,那么对于查找V52代码有什么建议吗?我不能在不破坏大量代码的情况下省略这些库。可以检查吗。jar文件以查找代码修订版?提前谢谢-赫菲斯托斯

共有3个答案

范鸿
2023-03-14

如果您使用组织。jetbrains:注释:15和retrolambda插件,然后删除行编译组织。jetbrains:注解:15.0,来自您的构建。渐变,错误将消失。这对我有用。

佴保臣
2023-03-14

如果您有一个带有非Android特定java库的模块,这应该可以使用:<代码>应用插件:'java'

将其放在build.gradle文件的顶部,然后重建。

    apply plugin: 'java'
    apply plugin: 'jacoco'

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

        sourceCompatibility = 1.7
        targetCompatibility = 1.7
    }
壤驷旭
2023-03-14

只需将java 1.8与Android Studio 3.0配合使用,并为我设置以下工作:它似乎需要最新的构建工具

classpath 'com.android.tools.build:gradle:3.0.0'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    defaultConfig {
        ...        
        //jackOptions { // DEPRECATED
            //enabled true
        //}
    }
    dexOptions {
        incremental true
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
 类似资料:
  • 每当我试图编译时,都会出现以下错误- 错误:将字节码转换为dex时出错:原因:dex无法解析版本52字节代码。这是由使用Java8或更高版本编译的库依赖项引起的。如果您在库子模块中使用“java”gradle插件,请将目标兼容性=“1.7”源兼容性=“1.7”添加到该子模块的build.gradle文件中。 我的build.gradle档案如下- } 我尝试了以下链接中提供的所有解决方案,但没有任

  • 我使用samsung knox sdk,正在更新knox版本(2.7.1)。这个错误在尝试编译我的应用程序时出现。 错误详细信息: 错误:将字节码转换为Dex时出错:原因:Dex无法解析版本52字节码。这是由使用Java8或更高版本编译的库依赖项造成的。如果在库子模块中使用'java'gradle插件,请将targetCompatibility='1.7'sourceCompatibility='

  • 项目清理和重建工作成功,但如果我想运行应用程序,我得到这样的错误。 错误:将字节码转换为Dex时出错:原因:Dex无法解析版本52字节码。这是由使用Java8或更高版本编译的库依赖项造成的。如果在库子模块中使用'java'gradle插件,请将targetCompatibility='1.7'sourceCompatibility='1.7'添加到该子模块的build.gradle文件中。 错误:

  • 我正在尝试构建我的项目,并得到这个奇怪的错误(因为所有这些都在以前的AS版本中工作得很好) 我知道问题是(正如错误告诉我的那样)我的一些依赖项是用java版本编译的。但是我怎么知道是哪一个呢? 这是我的身材。格拉德尔 我已经在SO上搜索了很多类似的问题(比如这个或这个),但是添加这些行来构建gradle 没有解决我的问题。我很困,需要有人帮助。提前谢谢。

  • 我刚刚安装了android studio,但gradle show的错误如下。插件版本为7.0,Gradle版本为7.0.2。此外,我试图下载到另一个gradle版本,但仍然无法完成构建,它显示了相同的错误。 配置根项目我的应用程序时出现问题。 无法解析配置“: classpath”的所有工件。无法解析com.android.tools.build: gradle: 7.0.0。项目要求:

  • 问题内容: 好的,现在我可以解析空间了,这是我以前的问题。现在我的解析器几乎可以使用了,但是有一个我无法弄清的缺陷。 我能够在段(参见代码)和管道之间的数据之后检索数据。我无法到达的是一个级别并检索包含在管道之间并以^分隔的数据。 例如。 但是,我当前的输出将是 我收到@后面带有各种ID的异常1 [Ljava.lang.String; @ 1786e64 下面给出的注释代码造成了问题。 码: 请指