telefono - generar apk debug android studio
Pruebas de ejecuciĆ³n de Android Gradle en construcciones sin depuraciĆ³n (3)
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. Por defecto, es el tipo de compilación de depuración, pero esto se puede reconfigurar con:
android { ... testBuildType "staging" }
Tengo un proyecto con tres tipos de compilación diferentes: depuración, beta y lanzamiento. Mi paquete de prueba siempre se crea para compilaciones de depuración, pero QA usa la compilación beta y queremos que QA ejecute estas pruebas en su amplia gama de dispositivos.
Estoy intentando crear un apk de prueba para el control de calidad que está firmado por la misma clave que la versión beta. Mirando a través de la documentación de Android-Gradle, no veo nada que me diga que no puedo hacer esto, pero no veo ninguna forma de configurar esto. ¿Hay alguna forma de configurar qué almacén de claves se utiliza al armar una prueba de apk? ¿O hay una manera de crear un apk de prueba sin firmar?
Para agregar un conjunto de fuentes de prueba para su variante de compilación, siga estos pasos:
- En la ventana Proyecto a la izquierda, haga clic en el menú desplegable y seleccione la vista Proyecto.
- Dentro de la carpeta del módulo apropiado, haga clic derecho en la carpeta src y haga clic en Nuevo> Directorio.
- Para el nombre del directorio, ingrese "androidTestVariantName". Por ejemplo, si tiene una variante de compilación llamada "MyFlavor", entonces el nombre del directorio debería ser "androidTestMyFlavor". Luego haga clic en Aceptar.
- Haga clic derecho en el nuevo directorio y haga clic en Nuevo> Directorio. Ingrese "java" como el nombre del directorio y luego 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 de variante.
Las pruebas instrumentadas en el conjunto src/androidTest/
source 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 src/androidTest/
y src/androidTestMyFlavor/
source.
Otra forma es poner la siguiente línea en la configuración por defecto.
Actualmente solo se prueba un tipo de compilación. Por defecto, es el tipo de compilación de depuración, pero esto se puede reconfigurar con:
android {
...
testBuildType "staging"
}
Esta es una respuesta incompleta a su pregunta ya que documenta lo que no puede hacer, pero la tarea connectedAndroidTest
, que es la que ejecuta las pruebas de androidTest
en su proyecto, está programada para ejecutarse contra el tipo de compilación de debug
, y no lo hago. ver una manera de señalarlo en un tipo de construcción diferente.
Siguiendo los consejos de ¿Hay alguna forma de enumerar dependencias de tareas en Gradle? y examinando el árbol de dependencias de tareas, si ejecuta:
./gradlew tasks --all
obtienes esto en tu 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 la debug
, y las dependencias de la tarea (que ve con el indicador -all
) confirman que la tarea depende de assembleDebug
.
La adición de tipos de compilación y tipos adicionales no parece afectar la dependencia del tipo de debug
incorporado.
Es posible que con Gradle-fu mayor que el mío, pueda volver a cablear las tareas para que las pruebas dependan de un tipo de compilación diferente, pero es probable que hacerlo sea frágil ya que dependerá de cosas que no son compatibles con la API en el Android Gradle plugin.
Sin embargo, para responder a su pregunta de manera más directa, si todo lo que desea es ejecutar pruebas en 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 los objetivos de prueba de Android en las compilaciones de depuración que usan 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 versión de depuración con el certificado beta.