【问题标题】:How to configure Firebase Performance Monitoring plugin extension in Gradle Kotlin DSL如何在 Gradle Kotlin DSL 中配置 Firebase 性能监控插件扩展
【发布时间】:2020-03-23 04:36:27
【问题描述】:

我有一个使用 Gradle 和 Kotlin DSL 的 Android 应用。我正在添加 Firebase 性能监控,但我希望它仅针对特定的构建类型启用。

我一直按照Firebase - Disable Firebase Performance Monitoring 提供的说明进行操作。不幸的是,提供的 sn-ps 在 Groovy 中。

我尝试通过执行以下操作在我的应用级 Gradle 脚本中获取对 Firebase 性能监控扩展的引用:

    plugins {
        ...
        id("com.google.firebase.firebase-perf")
        kotlin("android")
        kotlin("android.extensions")
        kotlin("kapt")
    }

    buildTypes {
        getByName(BuildTypes.DEBUG) {
            configure<com.google.firebase.perf.plugin.FirebasePerfExtension> {
                setInstrumentationEnabled(false)
            }
        }
        ...
    }

    ...

    dependencies {
        val firebaseVersion = "17.2.1"
        implementation("com.google.firebase:firebase-core:$firebaseVersion")
        implementation("com.google.firebase:firebase-analytics:$firebaseVersion")
        implementation("com.google.firebase:firebase-perf:19.0.5")
    }

Android Studio 没有发现任何问题并自动完成FirebasePerfExtension。 不幸的是,在运行 Gradle 同步时,我得到以下信息:

Extension of type 'FirebasePerfExtension' does not exist. 
Currently registered extension types: [ExtraPropertiesExtension, DefaultArtifactPublicationSet, ReportingExtension, SourceSetContainer, JavaPluginExtension, NamedDomainObjectContainer<BaseVariantOutput>, BaseAppModuleExtension, CrashlyticsExtension, KotlinAndroidProjectExtension, KotlinTestsRegistry, AndroidExtensionsExtension, KaptExtension]

没有与 Firebase 性能监控相关的插件扩展。

这是在我的项目级 build.gradle 文件dependencies 块中:

classpath("com.google.firebase:perf-plugin:1.3.1")

感谢任何帮助!

更新 1

按照Gradle - Migrating build logic from Groovy to Kotlin 指南“了解可用的插件提供的扩展”中的建议,我运行了kotlinDslAccessorsReport 任务。生成的扩展似乎都与 Firebase 无关。

【问题讨论】:

    标签: android gradle gradle-kotlin-dsl firebase-performance


    【解决方案1】:

    遇到了同样的问题,打算从 groovy 文件中申请,但似乎我在这里找到了解决方案:https://docs.gradle.org/5.0/userguide/kotlin_dsl.html#sec:interoperability

    withGroovyBuilder {
       "FirebasePerformance" {
           invokeMethod("setInstrumentationEnabled", false)
        }
    }
    

    【讨论】:

    • 太棒了!你是个传奇!这似乎工作得很好。 :)
    【解决方案2】:

    我们使用了this answer,我们在团队中发现了一种更好的工作方式

    check(this is ExtensionAware)
    configure<com.google.firebase.perf.plugin.FirebasePerfExtension> { setInstrumentationEnabled(false) }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      相关资源
      最近更新 更多