Android 从Kotlin dsl设置appDistributionProperties.apkPath
我已经尝试将我们的Android应用程序转换为使用Kotlin DSL for gradle,但我无法在我的CI构建中使用AppDistribution。这是我得到的错误: 应用程序分发找到此变体的多个输出文件。请联系firebase-support@google.com有关在应用程序分发中使用APK拆分的帮助 这就是groovy的工作原理: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
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
}
}
}
}
}