当前位置: 首页 > 知识库问答 >
问题:

Android和Fabric(Crashlytics)插件总是生成UUID(Gradle静态编程语言DSL)

姬锐
2023-03-14

我希望Fabric停止在每个构建上生成UUID。过去适用于Gradle的Groovy DSL的东西不适用于较新的静态编程语言DSL。如何使用静态编程语言DSL实现我的目标?

(Gradle版本4.10.2,Fabric 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。但是,如果我将构建脚本转换为Kotlin 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

共有2个答案

和光启
2023-03-14

我找到了解决这个问题的办法。创建一个文件,fabric。gradle(Groovy构建脚本!)并将其放置在项目结构中的某个位置。它将具有以下内容:

// or "com.android.library"
project.pluginManager.withPlugin("com.android.application") {
    android.buildTypes.debug.ext.alwaysUpdateBuildId = false
}

现在,在模块的构建脚本中(我们称之为app/build.gradle.kts),应用这个脚本插件:

apply(from = "path/to/fabric.gradle")

此解决方法基于此处的建议,在静态编程语言DSL入门中。

谢同化
2023-03-14

正如 Martin Rajniak 所提到的,你只能在 ExtensionAware 对象上调用 extra而 BuildType 不会被声明为一个对象。

然而,在运行时,构建类型实际上是扩展软件,这就是为什么它在Groovy中工作的原因,因为它的动态性,而不是在Kotlin中,在此范围内的额外的将引用项目的扩展。

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

android {
    buildTypes {
        getByName("debug") {
            (this as ExtensionAware).extra["alwaysUpdateBuildId"] = false
        }
    }
}
 类似资料:
  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 如何为方法/类生成注释?只需输入: 推入似乎在IntelliJ IDEA 2016.1.3中不起作用 看起来Dokka已经取代了KDoc,但为什么IntelliJ中没有支持?还是我错过了什么? 澄清:当输入/**enter时,会生成: 但是我想知道为什么没有添加@参数和其他的生成(就像IntelliJ为Java所做的那样)。这些注释也用于记录静态编程语言代码(https://kotlinlang.

  • 我有一个Spring Boot应用程序,以Kotlin为语言,Gradle为构建系统。所以基本上,我试图用应用程序源代码和依赖项构建一个胖jar,可以使用Java命令行工具运行。 Gradle构建脚本: 如果我使用gradle命令运行项目,那么它运行正常。但是当我构建jar并尝试ti运行时,它会抱怨以下错误:- 应用.kt:- 不知道我到底哪里做错了什么。

  • 为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D

  • 我对如何使用Gradle制作胖罐做了很多研究。但是,我无法弄清楚如何使用Kotlin DSL和插件。我有这个代码: 但是我不知道如何为胖罐子清单指定主类。我遵循的教程是这样做的: 但这是Groovy DSL,而不是Kotlin DSL,我还不太熟悉Kotlin的DSL,所以我不知道如何将其转换为Kotlin DSL。非常感谢你的帮助。

  • 正如标题所说,我正在尝试将Java和Kotlin混合在一个项目中。这里有一个很好的例子。混合java kotlin hello world。除了kotlin在src/main/Java/somepackage/SomeClass中找不到我的任何Java类之外,所有的东西都正常工作。Java语言 这是什么原因? 我的身材。gradle看起来像这样 而不是开始尝试在更大的项目上实现这一点。我试图通过创