buildFeatures 是不稳定的,因为它的签名引用不稳定...标记为@Incubating

Jam*_*l S 32 android kotlin android-studio build.gradle gradle-kotlin-dsl

更新 Android studio 项目并迁移到 Kotlin dsl。我看到上面的警告包装了buildFeatures块,其中我启用了 dataBinding 和更新的视图绑定功能,我的 AS 和 gradle、kotlin 插件版本如下:

安卓工作室V4.0

// defined in buildSrc\build.gradle.kts

val kotlinVersion     = "1.3.71"
val gradleVersion     = "4.0.0"
Run Code Online (Sandbox Code Playgroud)

一切工作正常,除了我的(应用程序)build.gradle.kts 中此块的所有 3 行警告:

 buildFeatures{
     dataBinding = true
     viewBinding = true
 }
Run Code Online (Sandbox Code Playgroud)

将鼠标悬停在每一行上时出现的警告消息如下:

'buildFeatures(kotlin.jvm.functions.Function1<? super com.android.build.api.dsl.ApplicationBuildFeatures,kotlin.Unit>)'
is unstable because its signature references unstable 'com.android.build.api.dsl.ApplicationBuildFeatures' 
marked with @Incubating 
Run Code Online (Sandbox Code Playgroud)
'getDataBinding()' is declared in unstable 'com.android.build.api.dsl.BuildFeatures' marked with @Incubating 
Run Code Online (Sandbox Code Playgroud)
'getViewBinding()' is declared in unstable 'com.android.build.api.dsl.BuildFeatures' marked with @Incubating 
Run Code Online (Sandbox Code Playgroud)

关于为什么它们被标记为警告的任何线索,在转换为 .kts 之前原始 build.gradle 文件中存在相同的块

Kry*_*ski 47

别担心,这只是一个友好的警告,你正在使用@Incubating类。我们来看看定义:

表示某个功能正在孵化。这意味着该功能目前正在开发中,并且可能随时更改。

所以不用担心,使用它,并最终在将来更新它。也许,它会在未来的一些 Android Studio 和插件版本中被标记为稳定。

- - - 编辑 - - -

如果您想删除此警告,请放在@Suppress("UnstableApiUsage")您的行上方

  • 如果您想避免警告,可以使用“viewBinding.isEnabled = true”而不使用“buildFeature”,但 IDE 会提示“isEnable”已弃用。对我来说,kotlin dsl 比 groovy 更好、更令人愉快,而且功能更丰富 - 就像这个“@Incubating”,所以有时,是的,它可能会很烦人,但一般更安全、更容易使用 (2认同)

Sha*_*000 9

build.gradle作为此处发布的答案的附录,您可以将警告抑制放在文件的顶部@file:Suppress("UnstableApiUsage"),这样就可以处理文件中的多个警告,而不是根据具体情况进行处理。