我的团队正在将自己的Gradle脚本从Groovy转换为Kotlin,并且我们正在努力用Kotlin脚本gradle复制某些行为。
有时,我们仅在基于CI构建时应用和配置插件。应用不使用的插件没有任何意义。
plugins {
if (Build.isCi) {
id("com.google.firebase.appdistribution")
}
}
但是,当我们在本地进行构建时,由于无法解析插件配置,因此构建脚本中出现错误:
if (Build.isCi) {
firebaseAppDistribution { // <-- Can't resolve `firebaseAppDistribution`
}
}
最佳答案
plugins DSL对您可以执行的操作非常严格。对于Kotlin来说尤其如此,因为它是在后台静态键入和编译的。
我相信您将需要执行以下操作:
plugins {
id("com.google.firebase.appdistribution") apply false
}
这应确保Firebase插件的相关扩展/类在构建脚本类路径上。
然后稍后在构建脚本中的某处,实际应用并配置插件:
plugins {
id("com.google.firebase.appdistribution") apply false
}
if (Build.isCi) {
apply(plugin = "com.google.firebase.appdistribution")
configure<FirebaseAppDistributionExtension> {
// ...
}
}
我不知道
firebaseAppDistribution
的实际类型/类,所以我以FirebaseAppDistributionExtension
为例。您将需要找出扩展的具体类型并将其用作类型。引用文献:
apply false
说明的底部)关于gradle - 在某些情况下,仅将插件应用于kotlin脚本gradle,但无法解析插件配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60833874/