Как установить имя выхода AAR из Gradle
У меня есть проект с несколькими модулями в нем, одна из которых - это Android-библиотека, названная (плохо), как sdk
. Когда я создаю проект, он выдает AAR с именем sdk.aar
.
Мне не удалось найти что-либо в документации Android или Gradle, которая позволяет мне изменить имя выхода AAR. Я бы хотел, чтобы у него было имя базы + номер версии, например, задачи Jar, но я не могу понять, как сделать то же самое для AAR, потому что все настройки для него, похоже, скрыты в плагине android.library.
Переименование модуля на данном этапе не является опцией, и это все равно не добавит номер версии в окончательный AAR.
Как я могу изменить имя AAR, сгенерированное com.android.library
в Gradle?
Gradle решение
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
versionCode 4
versionName '1.3'
testFunctionalTest true
project.archivesBaseName = "Project name"
project.version = android.defaultConfig.versionName
}
Ответы
Ответ 1
Как уже упоминалось в комментариях ниже и другом ответе, исходный ответ здесь не работает с Gradle 3+. В docs должно работать следующее:
Использование API-интерфейса Variant для управления вариантами вывода разбивается на новый плагин. Он по-прежнему работает для простых задач, таких как изменение APK имя во время сборки, как показано ниже:
// If you use each() to iterate through the variant objects,
// you need to start using all(). That because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
OLD ANSWER:
Я не могу получить archivesBaseName и версию для работы со мной с Android Studio 0.8.13/ Gradle 2.1. Хотя я могу установить archivesBaseName и версию в свой defaultConfig, это, похоже, не влияет на имя вывода. В итоге добавление следующего блока libraryVariants
к моей области андроида {} наконец-то сработало для меня:
libraryVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.aar')) {
def fileName = "${archivesBaseName}-${version}.aar"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
Ответ 2
с помощью build-plugin 1.5.0 теперь можно использовать archivesBaseName в defaultConfig
Ответ 3
В дополнение к qix ответьте здесь информацию, в которой вы можете добавить несколько путей к этому методу с помощью обычной строки:
libraryVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.aar')) {
def fileName = "${archivesBaseName}-${version}.aar"
output.outputFile = new File(outputFile.parent, fileName)
output.outputFile = new File("/home/pepperonas/IdeaProjects/Libraries/Base/testapp/libs", fileName)
}
}
}
(Upvotes принадлежат qix - я просто написал это как ответ из-за читаемости).
Ответ 4
Для Android Studio 3 с Gradle 4 и Android Plugin для Gradle 3.0.0 вы должны изменить ответ qix к следующему:
libraryVariants.all { variant ->
variant.outputs.all { output ->
if (outputFile != null && outputFileName.endsWith('.aar')) {
outputFileName = "${archivesBaseName}-${version}.aar"
}
}
}