当前位置:  开发笔记 > 运维 > 正文

Android和Fabric(Crashlytics)插件始终会生成UUID(Gradle Kotlin DSL)

如何解决《Android和Fabric(Crashlytics)插件始终会生成UUID(GradleKotlinDSL)》经验,为你挑选了1个好方法。

我希望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



1> 小智..:

正如马丁Rajniak 提到的,你只能叫extraExtensionAware对象,以BuildType不被声明为一个。

但是,在运行时期间,构建类型实际上是ExtensionAware,这就是为什么它因其动态性而在Groovy中有效的原因,而不是在Kotlin中起作用的原因,Kotlin extra在此范围中将引用Project的扩展名。

为了在没有Groovy的情况下实现这一目标,我们可以简单地将构建类型转换为ExtensionAware

android {
    buildTypes {
        getByName("debug") {
            (this as ExtensionAware).extra["alwaysUpdateBuildId"] = false
        }
    }
}

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有