Android Gradle ejecuta pruebas en compilaciones no-depuración

Tengo un proyecto con tres tipos diferentes de construcción: depuración, beta y versión. Mi paquete de prueba siempre se crea para las compilaciones de depuración, pero QA utiliza la versión beta y queremos que QA ejecute estas pruebas en su amplia gama de dispositivos.

Estoy intentando crear un apk de prueba para QA que esté firmado por la misma clave que la versión beta. Mirando a través de la documentación de AndroidGradle, no veo nada que me diga que no puedo hacer esto, pero no veo de todos modos para configurar esto. ¿Hay de todos modos puedo configurar qué keystore se utiliza al ensamblar una prueba apk? ¿O hay una manera de crear una prueba sin firmar?

3 Solutions collect form web for “Android Gradle ejecuta pruebas en compilaciones no-depuración”

Esta es una respuesta incompleta a su pregunta en que documenta lo que no se puede hacer, pero la tarea connectedAndroidTest , que es lo que ejecuta las pruebas de androidTest en su proyecto, es hardcoded para ejecutar contra el tipo de compilación de debug , y no lo hago vea una manera de apuntarlo a un tipo de compilación diferente.

Tomando el consejo de ¿Hay una manera de enumerar dependencias de tareas en Gradle? y examinando el árbol de dependencia de la tarea, si ejecuta:

 ./gradlew tasks --all 

usted consigue esto en su salida:

 Verification tasks ------------------ app:check - Runs all checks. [app:lint] app:connectedAndroidTest - Installs and runs the tests for Build 'debug' on connected devices. [app:assembleDebug, app:assembleDebugTest] app:connectedCheck - Runs all device checks on currently connected devices. [app:connectedAndroidTest] app:deviceCheck - Runs all device checks using Device Providers and Test Servers. 

La documentación de la tarea connectedAndroidTest afirma que ejecuta pruebas contra debug y las dependencias de tareas (que se ven con el indicador -all ) confirman que la tarea depende de assembleDebug .

La adición de tipos y sabores adicionales no parece afectar la dependencia del tipo de debug incorporado.

Es posible que con un Gradle-fu mayor que el mío, puedas volver a cablear las tareas para que las pruebas dependan de un tipo de compilación diferente, pero hacer esto es probable que sea frágil ya que está destinado a depender de cosas que no son compatibles. Complemento de Android Gradle.

Sin embargo, para responder a su pregunta de forma más directa, si lo que desea es ejecutar pruebas con una compilación con un certificado diferente, puede cambiar la configuración de firma en su compilación de debug para usar el certificado beta:

 android { signingConfigs { beta { keyAlias 'key' keyPassword 'password' storeFile file('/path/to/beta_keystore.jks') storePassword 'password' } } buildTypes { debug { signingConfig signingConfigs.beta } beta { signingConfig signingConfigs.beta } } } 

Lo probé y puedo ejecutar androidTest objetivos contra compilaciones de depuración que utilizan un almacén de claves personalizado de esta manera. Sin embargo, dudo que esto resuelva su problema, porque sospecho que desea ejecutar sus pruebas contra la versión beta, no una compilación de depuración con el certificado beta.

Ahora puede apuntar esto a un objetivo diferente, no sé cuándo sucedió esto, pero de los documentos:

Actualmente solo se prueba un tipo de compilación. De forma predeterminada, es el tipo de compilación de depuración, pero se puede reconfigurar con:

 android { ... testBuildType "staging" } 

Para agregar una fuente de prueba establecida para su variante de generación, siga estos pasos:

  • En la ventana Proyecto de la izquierda, haga clic en el menú desplegable y seleccione la vista Proyecto.
  • En la carpeta del módulo correspondiente, haga clic con el botón derecho en la carpeta src y haga clic en Nuevo> Directorio.
  • Para el nombre del directorio, escriba "androidTestVariantName". Por ejemplo, si usted tiene una variante de construcción llamada "MyFlavor", entonces el nombre del directorio shoulbe "androidTestMyFlavor". A continuación, haga clic en Aceptar.
  • Haga clic con el botón derecho en el nuevo directorio y haga clic en Nuevo> Directorio. Escriba "java" como nombre del directorio y, a continuación, haga clic en Aceptar.

Ahora puede agregar pruebas a este nuevo conjunto de fuentes siguiendo los pasos anteriores para agregar una nueva prueba. Cuando llegue al cuadro de diálogo Elegir directorio de destino, seleccione el nuevo conjunto de fuentes de prueba variante.

Las pruebas instrumentadas en src/androidTest/ source set son compartidas por todas las variantes de compilación. Al crear un APK de prueba para la variante "MyFlavor" de su aplicación, Gradle combina los conjuntos de fuentes src/androidTest/ y src/androidTestMyFlavor/ .

Otra forma es poner la línea siguiente en su configuración por defecto.

Actualmente solo se prueba un tipo de compilación. De forma predeterminada, es el tipo de compilación de depuración, pero se puede reconfigurar con:

 android { ... testBuildType "staging" } 
  • "La configuración de firma se debe especificar en los scripts de compilación de Gradle" ... lo hice
  • 2 iconos de aplicación después de instalar el release apk, utilizando gradle build
  • Añadir ViewPagerIndicator a Android Studio
  • Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:
  • ¿Cómo configurar los tipos de construcción frente a los sabores del producto?
  • El repositorio de maven de tejido genera gradaciones lentas
  • Construye una biblioteca de código cerrado de Android basada en Gradle
  • Android Studio Gradle no puede encontrar 'com.android.support:design:22.2.0' (Android Design Support Library)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.