isCoreLibraryDesugaringEnabled 在 gradle kotlin dsl / kts 中不起作用

Posted

技术标签:

【中文标题】isCoreLibraryDesugaringEnabled 在 gradle kotlin dsl / kts 中不起作用【英文标题】:isCoreLibraryDesugaringEnabled not works in gradle kotlin dsl / kts 【发布时间】:2020-12-26 14:11:13 【问题描述】:

要在我们的 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

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

【问题讨论】:

【参考方案1】:

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

isCoreLibraryDesugaringEnabled = true

对于之前的版本,使用:

coreLibraryDesugaringEnabled = true

【讨论】:

如果你使用coreLibraryDesugaringEnabled = true ,那么对于4.0版,编译器会说Unresolved reference: coreLibraryDesugaringEnabled【参考方案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 variants in gradle kts

由于***build.gradle.kts这一行中缺少行,因此无法正常工作:

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

【讨论】:

对。对我来说,将构建工具设置为 4.0.1 并将 gradle 版本设置为 gradle-6.1.1-all.zip 有效。谢谢。 由于4.0.1,我也使用coreLib...而不是isCoreLib...,而且我不得不更改kotlin版本(由于我的案例中的一些其他jetifier错误)以及更新和兼容的版本.所以不得不改变一堆东西。我正在建立几个月前的项目,所以面临这些错误。

以上是关于isCoreLibraryDesugaringEnabled 在 gradle kotlin dsl / kts 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章