【问题标题】:Trouble converting multi-module gradle script to kotlin dsl将多模块 gradle 脚本转换为 kotlin dsl 时遇到问题
【发布时间】:2022-09-25 23:39:11
【问题描述】:

考虑一个简单的多模块 Android 项目设置,类似于:

app
common

其中app 模块和common 模块都需要实现一些共享的gradle 逻辑,即:

android {
    testOptions {
        unitTests {
            returnDefaultValues = true
        }
        animationsDisabled = true
    }

    lint {
        abortOnError = false
    }
}

当我使用 groovy dsl 指定上述逻辑,然后使用apply from: rootProject.file(\'common.gradle\') 项目工作正常。但是当我使用 kotlin dsl 包含指定上述逻辑时,我得到以下错误:

Unresolved reference: android
Unresolved reference: testOptions
Unresolved reference: unitTests
...

groovy vs kotlin dsl 版本是确切地同样,请注意。只需将文件扩展名更改为 .kts 就会破坏构建。

我在这里做错了吗?或者这是一个已知的问题/限制?

    标签: android kotlin gradle


    【解决方案1】:

    由于 Kotlin DSL 需要编译,因此您不能像使用 Groovy 那样在 kts 文件中使用 android {} 块,因为 AGP 不适用于除 build.gradle.kts 之外的 kts 文件

    从 build.gradle.kts 中分离一些逻辑的唯一选项是 convention plugin 或常规 gradle 插件

    【讨论】:

      猜你喜欢
      • 2022-09-29
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2022-10-14
      • 2019-03-03
      • 2019-12-09
      • 2014-02-28
      • 2022-01-25
      相关资源
      最近更新 更多