Gradle: ¿Cómo ejecutar una tarea personalizada después de que se construye una Biblioteca de Android?

Tengo una librería de Android, está generando un debug.aar y un release.aar, necesito copiar el release.aar a otra carpeta como una referencia a otra parte del proyecto.

Lo que he hecho ahora es en esta Biblioteca de Android build.gradle definí una tarea:

task copyAARToCommonLibs(type: Copy) { from('../build/outputs/aar') { include '*-release.arr' } into '../SomeSampleApps/libs' } 

Estoy tratando de ejecutar esta tarea después de que el arr se genera, que supongo que es ensamblar fase de salida, por lo que he intentado hacer esto en build.gradle

 assembleRelease.doLast{ copyAARToCommonLibs } 

Construyo el proyecto global usando

  gradle build 

Pero esta tarea se está ejecutando al principio de todo el proceso.

También he intentado esto:

  applicationVariants.all { variant -> variant.assemble.doLast { copyAARToCommonLibs } } 

Dentro de android {} propiedad (supongo que eso es lo que se llama?) Ejecución gradle construir, tiene este error: No se pudo encontrar la propiedad 'applicationVariants'

Entonces me encontré con este fragmento:

 tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn copyAARToCommonLibs } 

Pero parece que esto hace que la tarea se ejecute después de compilar, no sé exactamente cómo modificar esto para ejecutar después de montar.

¿Podría alguien por favor corregirme donde hice mal y cómo puedo obtener este trabajo de trabajo de copia después de que se genera el archivo .arr?

Parece que finalizedBy podría ser útil.

 assembleRelease.finalizedBy(copyAARToCommonLibs) 

Tenga en cuenta el hecho de que de la siguiente manera no va a definir una dependencia:

 assembleRelease.doLast { copyAARToCommonLibs } 

En realidad … no hace exactamente nada. Necesita ejecutar la tarea:

 assembleRelease.doLast { copyAARToCommonLibs.execute() } 

Pero ejecutar la tarea de la siguiente manera es desalentado y muy mala práctica.

También puede probar:

 assembleRelease.doLast { copy { from('../build/outputs/aar') { include '*-release.aar' } into '../AscendonSDKSamples/libs' } } 
  • Jacoco y Pruebas Unitarias Código Cobertura con android-gradle-plugin> = 1.1
  • Cómo compilar AndroidAnnotations con Google Android Gradle Plugin?
  • Problema de compilación de Gradle: actualización de Quickblox y httpclient en el último SDK23 de Android
  • ¿Cómo funciona Android Studio gradle plugin gestionar archivos de recursos (AndroidManifest.xml)?
  • Cómo crear un Android Library Jar con gradle sin revelar públicamente el código fuente?
  • No se puede crear una aplicación cuando se usa gradle (Android Studio) y local maven repo
  • Android Studio Gradle Error en tiempo de compilación
  • ¿Cómo gradle maneja multi módulos con diferentes versiones de la biblioteca de soporte v4?
  • Android Gradle Adición de biblioteca estática
  • Error de generación con Android Studio 3.0 Canary 4
  • Gradle imprime la advertencia aunque se selecciona SuppressWarnings
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.