Итак, у меня возникла та же проблема (на данный момент запущена Gradle 5.4.1). Кроме того, я не увидел ответа, который бы эффективно охватывал как прикладные, так и библиотечные проекты.
Таким образом, я хотел сделать что-то, что теоретически можно было бы использовать в любом проекте, чтобы при необходимости создать единый build.gradle для всего проекта. Поскольку все оказалось довольно хорошо, я решил добавить его на тот случай, если кто-то захочет что-то, что будет работать как для приложений, так и для библиотечных проектов.
Соответствующая часть здесь.
android {
if (it instanceof com.android.build.gradle.AppExtension) {
it.applicationVariants.all { com.android.build.gradle.api.ApplicationVariant variant ->
configureOutputFileName(variant, project)
}
} else if (it instanceof com.android.build.gradle.LibraryExtension) {
it.libraryVariants.all { com.android.build.gradle.api.LibraryVariant variant ->
configureOutputFileName(variant, project)
}
}
}
Что просто вызывает метод ниже.
@SuppressWarnings("UnnecessaryQualifiedReference")
private void configureOutputFileName(com.android.build.gradle.api.BaseVariant variant, Project project) {
variant.outputs.all { output ->
def buildType = variant.buildType.name
String tmpOutputFileName = outputFileName
if (variant instanceof com.android.build.gradle.api.ApplicationVariant) {
String fileName = "${project.name}-${variant.versionName}_${buildType}.apk"
def defaultOutputDir = variant.packageApplicationProvider.get().outputDirectory
tmpOutputFileName = new File(defaultOutputDir.absolutePath, fileName).name
}
if (variant instanceof com.android.build.gradle.api.LibraryVariant) {
String fileName = "${project.name}_${buildType}.aar"
def defaultOutputDir = variant.packageLibraryProvider.get().destinationDirectory.asFile.get()
tmpOutputFileName = new File(defaultOutputDir.absolutePath, fileName).name
}
println(tmpOutputFileName)
outputFileName = tmpOutputFileName
}
}