J'ai un projet contenant plusieurs modules, dont l'un est une bibliothèque Android nommée (mal) comme sdk
. Lorsque je crée le projet, il génère un AAR nommé sdk.aar
.
Je n'ai rien trouvé dans la documentation Android ou Gradle qui me permet de changer le nom de la sortie AAR. Je voudrais qu'il ait un nom de base + un numéro de version comme le Jar les tâches le font, mais je ne peux pas savoir comment faire la même chose pour l'AAR car toute la configuration pour elle semble être cachée dans le plugin Android.library.
Renommer le module n'est pas une option à ce stade et cela n'ajouterait toujours pas le numéro de version à l'AAR final.
Comment puis-je changer le nom de l'AAR généré par com.Android.library
à Gradle?
solution Gradle
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
versionCode 4
versionName '1.3'
testFunctionalTest true
project.archivesBaseName = "Project name"
project.version = Android.defaultConfig.versionName
}
Comme mentionné dans les commentaires ci-dessous et une autre réponse, la réponse originale ici ne fonctionne pas avec Gradle 3+. Selon le docs , quelque chose comme ce qui suit devrait fonctionner:
L'utilisation de l'API Variant pour manipuler les sorties des variantes est rompue avec le nouveau plugin. Il fonctionne toujours pour des tâches simples, telles que la modification du nom de l'APK pendant la construction, comme indiqué ci-dessous:
// If you use each() to iterate through the variant objects,
// you need to start using all(). That's 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"
}
}
ANCIENNE RÉPONSE:
Je ne parviens pas à faire fonctionner archiveBaseName & version pour moi avec/ Android Studio 0.8.13/Gradle 2.1. Bien que je puisse définir archivesBaseName et la version dans mon defaultConfig, cela ne semble pas affecter le nom de sortie. Au final, l'ajout du bloc libraryVariants
suivant à ma portée Android {} a finalement fonctionné pour moi:
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)
}
}
}
Pour Android Studio 3 avec Gradle 4 et Android Plugin pour Gradle 3.0.0, vous devez changer la réponse de - qix à ce qui suit:
Android {
...
libraryVariants.all { variant ->
variant.outputs.all { output ->
if (outputFile != null && outputFileName.endsWith('.aar')) {
outputFileName = "${archivesBaseName}-${version}.aar"
}
}
}
}
avec le build-plugin 1.5.0, il est maintenant possible d'utiliser archivesBaseName dans le defaultConfig
En plus de qix, répondez ici aux informations que vous pouvez ajouter plusieurs chemins de sortie par cette méthode également par une chaîne régulière:
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)
}
}
}
(Les votes positifs appartiennent à qix - je viens d'écrire cela comme une réponse en raison de la lisibilité).
Dans mon cas, $ {version} aboutit à "non spécifié", enfin j'ai trouvé que $ {defaultConfig.versionName} fonctionne.
Android {
...
libraryVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${defaultConfig.versionName}.aar"
}
}
}