当前位置: 首页 > 面试题库 >

Android Studio超出预期的最高级别:

上官联
2023-03-14
问题内容

今天,我面临着一个巨大的错误,该错误使我无法在手机上运行示例项目。

当Android Studio构建项目时,它首先显示以下目标UP-TO-DATE

....
:demoproject:processDebugResources UP-TO-DATE
:demoproject:generateDebugSources UP-TO-DATE
:demoproject:compileDebugJava UP-TO-DATE
:demoproject:proguardDebug UP-TO-DATE
....

UP-TO-DATE在构建过程中有许多这样的日志语句。但是,他们总是停滞不前:demoproject:dexDebug。对于dexDebug,我似乎从未收到过UP-TO-DATE日志声明

而是,dexDebug跟着此错误:

:demoproject:dexDebug
warning: Ignoring InnerClasses attribute for an anonymous inner class
(com.xyz.corp.sample.project.demo.a) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.

现在有许多这样的Ignoring InnerClasses attribute错误。它们甚至出现在v4支持库中的类上,这确实令人困惑。

最后,这些错误以新的语句结尾:

UNEXPECTED TOP-LEVEL EXCEPTION:
at com.android.dx.command.dexer.Main.access$300(Main.java:83)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.processOne(Main.java:632)
at com.android.dx.command.Main.main(Main.java:106)
...while parsing com/xyz/corp/sdk/AbcSDKConfig.class
1 error; aborting
Error:Execution failed for task ':demoproject:dexDebug'.
> 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
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
...while parsing com/xyz/corp/sdk/AbcSDKConfig.class
1 error; aborting
at com.android.dx.command.dexer.Main.processClass(Main.java:704)
at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)

我不确定它们是否适用于我的情况。我什至无法 运行 该项目。我已经将IDE更新为SDK Tools
22.0.1,并修改了文件中的buildToolsVersion标记build.gradle,但无济于事。有人可以指导我如何处理此错误吗?所有帮助将不胜感激。

哦,这是我的build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion '22.0.1'

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }

    defaultConfig {
        applicationId "com.xyz.corp.demo.project"
        minSdkVersion 10
        targetSdkVersion 22

        versionCode 2060200
        versionName '2.6.02.00'
    }

    buildTypes {
        debug {

            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def file = output.outputFile
                    output.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
                }
            }
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.0'

    compile project(':xyzSDK')
}

帮助!


问题答案:

因为它正在报告:bad class file magic (cafebabe) or version (0034.0000)您应该检查是否使用与运行时尝试使用的Java版本相同的Java版本。如果使用的是gradle,则应在build.gradle文件中使用以下条目或类似条目:

apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7

使用此链接可获取更多gradle详细信息。

在Android Studio中,File -> Project Structure -> SDK Location -> JDKLocation您应该使用jdk 1.7,而不要中继Project level设置。有关类似的AndroidStudio问题,请参见此链接。



 类似资料:
  • 问题内容: 我该如何解决这个错误 错误:任务’:app:dexDebug’的执行失败。com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:处理’command’/Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Conten

  • 我试图理解我的意外行为: 容器中有一个最大高度为100%的元素,该容器也使用了最大高度,但意外的是,子元素溢出了父元素: 测试用例:http://jsfiddle.net/bq4Wu/16/ 但是,如果为父级指定了明确的高度,则这是固定的: 测试用例:http://jsfiddle.net/bq4Wu/17/ 有人知道第一个例子中孩子为什么不尊重父母的最大身高吗?为什么需要明确的高度?

  • 回顾第十章 “生命周期与引用有效性” 部分,我们学习了怎样使用生命周期参数注解引用来帮助 Rust 理解不同引用的生命周期如何相互联系。我们理解了每一个引用都有生命周期,不过大部分情况 Rust 允许我们省略生命周期。这里我们会看到三个还未涉及到的生命周期高级特征: 生命周期子类型(lifetime subtyping),一个确保某个生命周期长于另一个生命周期的方式 生命周期 bound(life

  • 英文中形容词有原级、比较级、最高级之分。翻译最高级的常见做法就是在之前加上“最”:best就是“最好”,worst就是“最糟”,highest就是“最高”,lowest就是“最低”……总之离不开“最”字。 这种现象正常吗?著名翻译家思果先生曾提出,最高级不一定都要翻译成“最xx”,因为中文里“最”往往是唯一,而英文的最高级则可以加one of…之类的限定,“最xx之一”的说法,多少有点名不正、言不

  • 我怎么可能得到这个信息?这没有任何意义。我正在使用

  • 假设我有一个Hazelcast映射,它在配置文件中定义了86400秒的TTL,在初始化映射时使用。 但是,我在代码中观察到在map中添加条目时(使用map.put())-还会为所有单个值传递另一个TTL。 关键级别的TTL会被认为是高级的,而TTL和map级别会被忽略吗?