11

要在我们的 android-library 模块中启用脱糖,我们必须将其放入build.gradle

android {
  compileOptions {
    coreLibraryDesugaringEnabled true
  }
}

但是我们已经将所有脚本迁移到 gradle kotlin dsl,所以问题出现build.gradle.kts在所有三个方面:

android {
    compileOptions {
        isCoreLibraryDesugaringEnabled = true
    }
}
configure<BaseExtension> {
    compileOptions {
        isCoreLibraryDesugaringEnabled = true
    }
}
android {
    if (this is com.android.build.api.dsl.LibraryExtension<*, *, *, *, *, *, *, *, *, *, *>) {
        buildFeatures.viewBinding = true
    }
}

每次它抛出Unresolved reference: isCoreLibraryDesugaringEnabled

有人知道如何解决这个问题吗?

4

2 回答 2

29

如果您使用的是 Android Gradle 插件版本 >= 4.1,请使用:

isCoreLibraryDesugaringEnabled = true

对于之前的版本,请使用:

coreLibraryDesugaringEnabled = true
于 2020-09-08T13:15:01.090 回答
2

当我切换到较新的 android 插件版本(4.1.0-rc02)时,它理论上可以工作。IDE 说它的语法不好,但它在编译期间可以工作。

if (this is com.android.build.api.dsl.LibraryExtension<*, *, *, *, *>) {
    compileOptions.isCoreLibraryDesugaringEnabled = true
}

但是,这不是一个理想的解决方案

----- 最终解决方案 -----

解决方案类似于How to exclude (ignore) android build variables in gradle kts

由于此行的顶层缺少行,因此无法正常工作build.gradle.kts

classpath("com.android.tools.build:gradle:4.0.1")

于 2020-09-08T09:19:31.080 回答