java8 option_Java8配置—Please specify proper '-jvm-target' option

当尝试将JVM目标为1.8的字节码内联到1.6目标的字节码时遇到错误。解决方案是在app/build.gradle文件中设置`sourceCompatibility`和`targetCompatibility`为JavaVersion.VERSION_1_8,并为Kotlin项目设置`jvmTarget`。从Android Gradle插件3.0.0开始支持部分Java 8语言特性,4.0.0及更高版本增加了对Java 8 API的脱糖支持,允许在低API级别上使用某些功能。
摘要由CSDN通过智能技术生成

Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option

无法将使用JVM target 1.8构建的字节码内联到使用JVM target 1.6构建的字节码中。请指定正确的“ -jvm-target”选项。

解决

在 app/build.gradle 下

android {

...

// Configure only for each module that uses Java 8

// language features (either in its source code or

// through dependencies).

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_8

targetCompatibility JavaVersion.VERSION_1_8

}

// For Kotlin projects

kotlinOptions {

jvmTarget = "1.8"

}

}

Java 8 语言功能支持(Android Gradle 插件 3.0.0 及更高版本)

如需开始使用受支持的 Java 8 语言功能,请将 Android 插件更新为 3.0.0(或更高版本)。在此之后,针对使用(在源代码中使用或通过依赖项使用)Java 8 语言功能的每个模块,更新模块的 build.gradle 文件,如上文所示。

使用 Android Gradle 插件 3.0.0 及更高版本构建应用时,插件并非支持所有 Java 8 语言功能。

Java 8 语言功能

备注

请注意,Android 不支持 lambda 表达式的序列化。

类型注解信息仅在编译时可用,在运行时不可用。此外,在 API 级别 24 及更低级别中,平台支持 TYPE,而不支持 ElementType.TYPE_USE 或 ElementType.TYPE_PARAMETER。

Java 8 及更高版本 API 脱糖支持(Android Gradle 插件 4.0.0 及更高版本)

如果您使用 Android Gradle 插件 4.0.0 或更高版本构建应用,插件扩展了对使用多种 Java 8 语言 API 的支持,而无需为应用设置最低 API 级别。

之所以能够实现对较低平台版本的这种额外支持,是因为脱糖引擎经过插件 4.0.0 及更高版本扩展后,也能使 Java 语言 API 脱糖。因此,您可以在支持较低 Android 版本的应用中添加过去仅在最新 Android 版本中可用的标准语言 API(如 java.util.streams)。

使用 Android Gradle 插件 4.0.0 或更高版本构建应用时,支持下面一组 API:

顺序流 (java.util.stream)

java.time 的子集

java.util.function

java.util.{Map,Collection,Comparator} 的最近新增内容

可选内容(java.util.Optional、java.util.OptionalInt 和 java.util.OptionalDouble)以及对上述 API 很有用的一些其他新类

java.util.concurrent.atomic 的一些新增内容(AtomicInteger、AtomicLong 和 AtomicReference 的新方法)

ConcurrentHashMap(包含 Android 5.0 的问题修复)

如需查看受支持的 API 的完整列表,请参阅通过脱糖获得 Java 8 及更高版本 API。

为了支持这些语言 API,插件编译了一个单独的 DEX 文件(其中包含缺失 API 的实现),并将其添加到您的应用中。脱糖过程会重新编写应用的代码,以便在运行时改用此库。

如需在任何版本的 Android 平台上启用对这些语言 API 的支持,请将 Android 插件更新为 4.0.0(或更高版本),并在模块的 build.gradle 文件中添加以下内容:

android {

defaultConfig {

// Required when setting minSdkVersion to 20 or lower

multiDexEnabled true

}

compileOptions {

// Flag to enable support for the new language APIs

coreLibraryDesugaringEnabled true

// Sets Java compatibility to Java 8

sourceCompatibility JavaVersion.VERSION_1_8

targetCompatibility JavaVersion.VERSION_1_8

}

}

dependencies {

coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值