Comment définir le nom de la sortie AAR de Gradle

J’ai un projet avec plusieurs modules dont l’un est une bibliothèque Android nommée (mal) comme sdk . Lorsque je construis le projet, il sdk.aar un AAR nommé sdk.aar .

Je n’ai rien trouvé dans la documentation Android ou Gradle qui me permette de changer le nom de la sortie AAR. Je voudrais qu’il ait un nom de base + un numéro de version comme le font les tâches Jar, mais je ne peux pas faire la même chose pour l’AAR car toute la configuration semble être cachée dans le plugin android.library.

Renommer le module n’est pas une option à ce stade et cela n’ajoute 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 dans 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 les documents , quelque chose comme ce qui suit devrait fonctionner:

L’utilisation de l’API Variant pour manipuler les sorties de variantes est interrompue 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 archivesBaseName & version avec Android Studio 0.8.13 / Gradle 2.1 . Bien que je puisse définir archivesBaseName et la version dans defaultConfig, cela ne semble pas affecter le nom de sortie. Finalement, l’ajout du bloc libraryVariants suivant à mon object 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 remplacer la réponse de qix par la suivante:

 android { ... libraryVariants.all { variant -> variant.outputs.all { output -> if (outputFile != null && outputFileName.endsWith('.aar')) { outputFileName = "${archivesBaseName}-${version}.aar" } } } } 

En plus de qix, répondez ici à l’information que vous pouvez append plusieurs chemins de sortie par cette méthode 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) } } } 

(Upvotes appartiennent à qix – je viens d’écrire ceci comme une réponse en raison de la lisibilité).

avec le build-plugin 1.5.0 il est maintenant possible d’utiliser archivesBaseName dans le defaultConfig