Android 从Kotlin dsl设置appDistributionProperties.apkPath

Android 从Kotlin dsl设置appDistributionProperties.apkPath,android,gradle-kotlin-dsl,firebase-app-distribution,Android,Gradle Kotlin Dsl,Firebase App Distribution,我已经尝试将我们的Android应用程序转换为使用Kotlin DSL for gradle,但我无法在我的CI构建中使用AppDistribution。这是我得到的错误: 应用程序分发找到此变体的多个输出文件。请联系firebase-support@google.com有关在应用程序分发中使用APK拆分的帮助 这就是groovy的工作原理: applicationVariants.all { variant -> variant.outputs.each { ou

我已经尝试将我们的Android应用程序转换为使用Kotlin DSL for gradle,但我无法在我的CI构建中使用AppDistribution。这是我得到的错误:

应用程序分发找到此变体的多个输出文件。请联系firebase-support@google.com有关在应用程序分发中使用APK拆分的帮助

这就是groovy的工作原理:

    applicationVariants.all { variant ->
        variant.outputs.each { output ->
                tasks.findAll {
                    it.name.startsWith(
                            "appDistributionUpload${variant.name.capitalize()}")
                }.each {
                    it.doFirst {
                        it.appDistributionProperties.apkPath = output.outputFile.absolutePath
                    }
                }
        }
    }
我找不到在kotlin dsl中设置appDistributionProperties.apkPath的方法:

applicationVariants.forEach{variant->
variant.outputs.forEach{output->
tasks.filter{
it.name.startsWith(“AppDistributionPload${variant.name.capitalize()}”)
}弗雷奇先生{
首先是我{
it.setProperty(“apkPath”,output.outputFile.absolutePath)
}
}
}
}
我想我需要一个神奇的字符串,而不仅仅是“apkPath”,因为似乎没有一种强类型的方式来表达这一点。

Kotlin dsl方式:

android.applicationVariants.all {
    this.outputs.all {
        val output = this
        tasks.matching {
            it.name.startsWith(
                "appDistributionUpload${this.name.capitalize()}"
            )
        }.forEach {
            it.doFirst {
                if (it is com.google.firebase.appdistribution.gradle.UploadDistributionTask) {
                    it.appDistributionProperties.get().apkPath = output.outputFile.absolutePath
                }
            }
        }
    }
}