studio sourcesets para flavors descargar defaultconfig configurar android gradle android-library

android - sourcesets - Cómo establecer el nombre de la salida AAR de Gradle



flavors android gradle (4)

Tengo un proyecto con varios módulos, uno de los cuales es una biblioteca Android llamada (pobremente) como sdk . Cuando construyo el proyecto, produce un AAR llamado sdk.aar .

No he podido encontrar nada en la documentación de Android o Gradle que me permita cambiar el nombre de la salida de AAR. Me gustaría tener un número de versión basename + como lo hacen las tareas Jar, pero no sé cómo hacer lo mismo para el AAR porque toda la configuración parece estar oculta en el complemento android.library.

Renombrar el módulo no es una opción en esta etapa y aún así no agregaría el número de versión al AAR final.

¿Cómo puedo cambiar el nombre del AAR generado por com.android.library en Gradle?

Solución Gradle

defaultConfig { minSdkVersion 9 targetSdkVersion 19 versionCode 4 versionName ''1.3'' testFunctionalTest true project.archivesBaseName = "Project name" project.version = android.defaultConfig.versionName }


Además de qix, responda aquí la información de que puede agregar múltiples rutas de salida por este método mediante una cadena regular también:

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) } } }

(Los votos ascendentes pertenecen a qix; simplemente escribí esto como respuesta debido a la legibilidad).


Como se menciona en los comentarios a continuación y en otra respuesta, la respuesta original aquí no funciona con Gradle 3+. Según los docs , algo como lo siguiente debería funcionar:

El uso de la API Variant para manipular las salidas variantes se rompe con el nuevo complemento. Todavía funciona para tareas simples, como cambiar el nombre de APK durante el tiempo de compilación, como se muestra a continuación:

// 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" } }

ANTIGUA RESPUESTA:

No puedo obtener archivosBaseName y versión que funcionen para mí w / Android Studio 0.8.13 / Gradle 2.1 . Aunque puedo configurar archivesBaseName y version en mi defaultConfig, no parece afectar el nombre de la salida. Al final, agregar el siguiente bloque libraryVariants a mi {} scope de Android finalmente funcionó para mí:

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) } } }


Para Android Studio 3 con Gradle 4 y Android Plugin para Gradle 3.0.0, debe cambiar la respuesta de a lo siguiente:

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


con el build-plugin 1.5.0 ahora es posible usar archivesBaseName en el DefaultConfig