Set applicationApk y instrumentationApk para la cuchara Gradle Plugin

Me gustaría establecer archivos .apk que se utilizarán para ejecutar mis pruebas con SpoonGradlePlugin.

Hay las propiedades disponibles que puedo fijar programatically del archivo del gradle:

Https://github.com/stanfy/spoon-gradle-plugin/blob/master/src/main/groovy/com/stanfy/spoon/gradle/SpoonExtension.groovy

Pero mi proyecto tiene varios sabores y nombres y me gustaría probarlos. Con la configuración actual obtengo:

* What went wrong: A problem was found with the configuration of task ':app:spoonDebugAndroidTest'. > File '/Users/F1sherKK/Dev/MyApp-Android/app/build/outputs/apk/app-debug.apk' specified for property 'applicationApk' does not exist. 

Mis nombres de compilación son:

 app-debug-androidTest-unaligned.apk MyApp-debugA-1.2.3-201.apk MyApp-debugB-1.2.3-201.apk MyApp-debugC-1.2.3-201.apk 

Es por eso que me gustaría configurar mi .apk en algún lugar en código gradle – o consola. Lo que he encontrado hasta ahora hay campos disponibles en Spoon Gradle Plugin allí:

Https://github.com/stanfy/spoon-gradle-plugin/blob/master/src/main/groovy/com/stanfy/spoon/gradle/SpoonRunTask.groovy

Con nombres:

  /** Instrumentation APK. */ @InputFile File instrumentationApk /** Application APK. */ @InputFile File applicationApk 

Pero no puedo acceder a los de gradle como propiedades en SpoonExtension.groovy.

¿Hay alguna manera de configurar esos campos?

// EDIT – Añadido algunos intentos: Esta es mi base de configuración cuchara:

 spoon { debug = true baseOutputDir = file("$buildDir/spoon-log") if (project.hasProperty('spoonClassName')) { className = project.spoonClassName if (project.hasProperty('spoonMethodName')) { methodName = project.spoonMethodName } } } 

Y las tareas de extensión y sobrescribir instumentationArgs para establecer el paquete y lanzar otro tipo de pruebas.

 task spoonAllTests(type: GradleBuild, dependsOn: ['spoon']) { spoon { instrumentationArgs = ["package=com.myapp.sendmoney.instrumentation"] } } task spoonFlowTests(type: GradleBuild, dependsOn: ['spoon']) { spoon { instrumentationArgs = ["package=com.myapp.instrumentation.flowtests"] } } 

Y ahora trato de editar el archivo applicationApk o instrumentationApk:

Introduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagen

Edit2: He intentado algo nuevo:

 task spoonFlowTests(type: GradleBuild, dependsOn: ['spoon']) { spoon { inputs.property("applicationApk", "$buildDir/outputs/apk/ap12345p-debug.apk") inputs.property("instrumentationApk", "$buildDir/outputs/apk/ap125p-debug.apk") println inputs.getFiles() println inputs.getProperties() instrumentationArgs = ["package=com.azimo.sendmoney.instrumentation.flowtests"] } } 

Y la respuesta terminal:

 2015-10-26 20:24:12 [SR.runTests] Executing instrumentation suite on 0 device(s). 2015-10-26 20:24:12 [SR.runTests] Application: com.azimo.sendmoney.debug1 from /Users/F1sherKK/Dev/Azimo-Android/app/build/outputs/apk/app-debug.apk 2015-10-26 20:24:12 [SR.runTests] Instrumentation: com.azimo.sendmoney.debug1.test from /Users/F1sherKK/Dev/Azimo-Android/app/build/outputs/apk/app-debug-androidTest-unaligned.apk :app:spoon :app:spoonFlowTests file collection {instrumentationApk=/Users/F1sherKK/Dev/Azimo-Android/app/build/outputs/apk/ap125p-debug.apk, applicationApk=/Users/F1sherKK/Dev/Azimo-Android/app/build/outputs/apk/ap12345p-debug.apk} :Azimo-Android:app:help Welcome to Gradle 2.5. To run a build, run gradlew <task> ... To see a list of available tasks, run gradlew tasks To see a list of command-line options, run gradlew --help To see more detail about a task, run gradlew help --task <task> BUILD SUCCESSFUL Total time: 13.289 secs 

Por favor vea mi respuesta a su pregunta diferente explicando lo que está mal con cómo configurar sus tareas.

Puede aplicar el complemento Spoon después de cambiar el nombre apk de la siguiente manera:

 applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File( output.outputFile.parent, output.outputFile.name.replace(".apk", "-${variant.versionName}.apk")) } } afterEvaluate { apply plugin: 'spoon' spoon { debug = true; } } 

Fuente: https://github.com/stanfy/spoon-gradle-plugin/issues/70

Tenemos que considerar la anotación de los parámetros:

  /** Instrumentation APK. */ @InputFile File instrumentationApk /** Application APK. */ @InputFile File applicationApk 

Dado que están marcados como @InputFile , deberíamos ser capaces de crear una tarea personalizada que depende de la cuchara que pasa las entradas utilizando la propiedad input.files .

Un ejemplo aproximado (no probado):

 task customSpoon(type: Exec, dependsOn: spoon) { inputs.files ["path/instrumentation.apk", "path/debuggable.apk"] } 

ACTUALIZAR

Como alternativa, simplemente cree una tarea personalizada que simule una llamada parametrizada de línea de comandos a la tarea de Spoon base, como la siguiente

 task runSpoonTask(type: Exec) { commandLine './gradlew', 'spoon', '$buildDir/outputs/apk/ap12345p-debug.apk', '$buildDir/outputs/apk/ap125p-debug.apk' } 

Yo tuve el mismo problema:

… especificado para la propiedad 'applicationApk' no existe

Utilizamos esto para cambiar el nombre de "app-debug.apk" a "currentProject-debug.apk":

 applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File( output.outputFile.parent, output.outputFile.name.replace("app", "${project.hdmiAppName}")) } } 

Pero parece que esto funciona mucho mejor con Spoon:

 defaultConfig { applicationId packageName ... setProperty("archivesBaseName", "${project.hdmiAppName}") } 

Esto cambiará el nombre de la "aplicación" -Parte del APK-Nombre a lo que quieras. En nuestro caso tenemos "${project.hdmiAppName}" especificado en un archivo de propiedades. Pero supongo que también puede ser "MyApp-${versionName}" .

  • Eclipse utiliza la variable PATH antigua para ejecutar el proceso de línea de comandos en la tarea Gradle?
  • Tarea personalizada de Android Gradle por variante
  • Grails C2DM - Android
  • En Android Gradle build.gradle ¿Qué es "it" en it.buildConfigField?
  • Es groovy un lenguaje de desarrollo potencial para Android
  • ¿Cómo obtener tipos de parámetros de métodos en plantillas en vivo en Intellij IDEA?
  • Obtener Resolver error al importar proyecto en android studio, No se puede cargar la clase 'org.codehaus.groovy.runtime.typehandling.ShortTypeHandling'
  • Gradle Advertencia: falta declaración groovy devolución
  • Grails save () Objeto de dominio en realidad hace una selección?
  • Gradle buildType / productFlavor utilizando inesperado buildConfigField
  • 'Dependencias' no se puede aplicar a '(groovy.lang.Closure)'
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.