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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章