Настройка appDistributionProperties.apkPath из Kotlin dsl

Я попытался преобразовать наше приложение для Android, чтобы использовать Kotlin DSL для gradle, и я не могу заставить AppDistribution работать в моей сборке CI. Это ошибка, которую я получил:

Служба распространения приложений обнаружила более 1 выходного файла для этого варианта. Обратитесь по адресу [email protected], чтобы получить помощь по разделению APK с помощью App Distribution.

Вот что работало в 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
                    }
                }
        }
    }

Я не могу найти способ установить appDistributionProperties.apkPath в kotlin dsl:

applicationVariants.forEach { variant ->
    variant.outputs.forEach { output ->
            tasks.filter {
                it.name.startsWith("appDistributionUpload${variant.name.capitalize()}")
            }.forEach {
                it.doFirst {
                    it.setProperty("apkPath", output.outputFile.absolutePath)
                }
            }
    }
}

Я предполагаю, что мне нужна волшебная строка, а не просто apkPath, потому что, похоже, не существует строго типизированного способа сказать это.


person Robert Jeppesen    schedule 12.05.2021    source источник


Ответы (1)


Способ 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
                }
            }
        }
    }
}
person Raghuram    schedule 25.05.2021