Android studio 使用Java 8 后还是报错Inv

2019-12-10  本文已影响0人  Yellow158

如果 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

上一篇下一篇

猜你喜欢

热点阅读