Gradle Kotlin DSL 中的 Dynatrace 配置

Configuration of Dynatrace in Gradle Kotlin DSL

我有一个 Android 项目,使用在 kotlin-dsl 中编写的 Gradle 构建配置并尝试应用 Dynatrace:

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath("com.dynatrace.tools:android:7.2.4.1262")
  }
}

// I apply the plugin
apply(plugin = "com.dynatrace.tools.android")

一切顺利,直到我尝试使用 dynatrace 配置块,但从未解决:

dynatrace {
    defaultConfig {
       ....
    }
}

这是我正在使用的环境:

我正在关注 Dynatrace's own instructions, and even though they don't mention how to perform the configuration with the kotlin-dsl, they have just added support for it

如有任何帮助,我们将不胜感激。

我已经用 apply DSL 试过了,但没有成功。我通过 plugins DSL 应用了插件。

顶级build.gradle.kts:

buildscript {
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath("com.android.tools.build:gradle:3.5.0-beta01")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.31")
        classpath("com.dynatrace.tools:android:7.2.4.1262")
    }
}

allprojects {
    repositories {
        google()
        jcenter()  
    }
}

应用build.gradle.kts:

plugins {
    id("com.android.application")
    kotlin("android")
    id("com.dynatrace.tools.android")
    ...
}

android {
    defaultConfig {
        ...
    }
    buildTypes {
        ...
    }
}

dynatrace {
    defaultConfig {
        ...
    }
}

dependencies {
    ...
}

我在尝试将我的 build.gradle 迁移到 KTS(使用 dynatrace 配置)时遇到了同样的问题。 我在 Dynatrace 网站上找到正确的文档时遇到了一些问题,但最后我找到了 (https://www.dynatrace.com/support/help/how-to-use-dynatrace/real-user-monitoring/setup-and-configuration/mobile-apps/instrument-android-app/instrumentation-via-plugin/instrumentation-via-plugin/#tabgroup-android-gradle-plugin--groovy)

我的解决方案,在顶级 build.gradle.kts:

buildscript {
  repositories {
        google()
        mavenCentral()
  }
  dependencies {
    classpath("com.dynatrace.tools.android:gradle-plugin:8.207.1.1004")
  }
}

apply(plugin = "com.dynatrace.instrumentation")
configure<com.dynatrace.tools.android.dsl.DynatraceExtension> {
    configurations {
        create("prod") {
            variantFilter("[rR]elease")
            autoStart {
                applicationId("xxx")
                beaconUrl("yyy")
            }
            userOptIn(true)
            userActions.timeout(5000)
        }
        create("debug") {
            autoStart {
                applicationId("aaa")
                beaconUrl("bbb")
            }
            userOptIn(true)
            userActions.timeout(5000)
        }
    }
}