我希望Fabric停止在每个版本上生成UUID。与Gradle的Groovy DSL一起使用的功能不适用于较新的Kotlin DSL。如何使用Kotlin DSL实现我的目标?
(版本4.10.2,结构1.25.4)
根据Fabric的文档,您可以将以下内容添加到应用程序的构建脚本中
android { buildTypes { debug { // Only use this flag on builds you don't proguard or upload // to beta-by-crashlytics ext.alwaysUpdateBuildId = false
这可行。这样可以防止Fabric在每个调试版本上生成UUID。但是,如果将我的生成脚本来科特林DSL,下面不工作
android { buildTypes { getByName("debug") { // Only use this flag on builds you don't proguard or upload // to beta-by-crashlytics ext.set("alwaysUpdateBuildId", false)
Fabric现在忽略此值。
我尝试了以下方法:
project.ext.set("alwaysUpdateBuildId", false) rootProject.ext.set("alwaysUpdateBuildId", false) val alwaysUpdateBuildId by extra(false) val alwaysUpdateBuildId by project.extra(false) val alwaysUpdateBuildId by rootProject.extra(false)
没有工作。
供进一步参考,生成此值的Gradle任务似乎已命名为:app:fabricGenerateResourcesDebug
,类型为DefaultTask
。
正如马丁Rajniak 提到的,你只能叫extra
上ExtensionAware
对象,以BuildType
不被声明为一个。
但是,在运行时期间,构建类型实际上是ExtensionAware
,这就是为什么它因其动态性而在Groovy中有效的原因,而不是在Kotlin中起作用的原因,Kotlin extra
在此范围中将引用Project
的扩展名。
为了在没有Groovy的情况下实现这一目标,我们可以简单地将构建类型转换为ExtensionAware
:
android {
buildTypes {
getByName("debug") {
(this as ExtensionAware).extra["alwaysUpdateBuildId"] = false
}
}
}