如果 Android Studio 检测到您的项目正在使用 Jack、Retrolambda或 DexGuard,IDE 会使用由这些工具提供的 Java 8 支持。不过,与默认工具链相比,这些工具缺少部分功能和支持(例如:Retrolambda 缺少对使用 Java 8 语言功能的第三方库的支持)。因此,请按照本部分的说明迁移到 Android Studio 的默认工具链。
从 Retrolambda 迁移
与 Android Studio 的默认工具链相比,Retrolambda 缺少对使用 Java 8 语言功能的第三方库的支持。要迁移到默认工具链,请从项目级 build.gradle 文件中移除 Retrolambda 依赖项:
buildscript {
...
dependencies {
// Remove the following dependency.
classpath 'me.tatarka:gradle-retrolambda:<version_number>'
}
}
此外,还应从每个模块的 build.gradle 文件中移除 Retrolambda 插件和 retrolambda 代码块:
// Remove the following plugin.
apply plugin: 'me.tatarka.retrolambda'
...
// Remove this block after migrating useful configurations.
retrolambda {
...
// If you have arguments for the Java VM you want to keep,
// move them to your project's gradle.properties file.
jvmArgs '-Xmx2048m'
}
从 Jack 迁移
根据此公告,Jack 工具链已被弃用。如果您的项目依赖于 Jack,您应执行迁移,以便使用 Android Studio 的默认工具链内置的 Java 8 支持。使用默认工具链还支持使用 Java 8 语言功能的第三方库以及依赖于 .class
中间文件的工具。
要停用 Jack 而改用默认工具链,只需从模块的 build.gradle
文件中移除 jackOptions
代码块即可:
android {
...
defaultConfig {
...
// Remove this block.
jackOptions {
enabled true
...
}
}
// Keep the following configuration in order to target Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
// For Kotlin projects
kotlinOptions {
jvmTarget = "1.8"
}
}
参考官方文档:https://developer.android.com/studio/write/java8-support#migrate