script - gradle version android studio
¿Se puede implementar en un dispositivo a través de Gradle desde la línea de comando? (9)
Lo que dice realmente la pregunta: ¿puedes emitir comandos directamente a gradlew a través de la línea de comandos para compilar, empaquetar e implementar en un dispositivo?
Build -> uninstall old verion -> instalar nueva versión -> ejecutar la aplicación.
echo "Build application" && ./gradlew clean build &&
echo "Uninstall application" && adb uninstall [application package] &&
echo "Install application" && adb -d install app/build/outputs/apk/<build type>/[apk name].apk echo "Run application" &&
adb shell am start -n [application package]/.[application name]
O si desea instalar y ejecutar la aplicación en el tipo de depuración.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]
Escribí esta tarea para poder instalar y también abrir la aplicación en el dispositivo. Como tenía varios buildTypes
y flavors
con diferentes buildTypes
aplicaciones, no fue posible codificar el nombre del paquete. Así que lo escribí así en su lugar:
android.applicationVariants.all { variant ->
task "open${variant.name.capitalize()}" {
dependsOn "install${variant.name.capitalize()}"
doLast {
exec {
commandLine "adb shell monkey -p ${variant.applicationId} -c android.intent.category.LAUNCHER 1".split(" ")
}
}
}
}
Esto le daría open{variant}
para cada tarea de install{variant}
que ya tenga.
Hay tres comandos para lograr esto:
./gradlew assembleDebug #To build the project
adb install -r ./app/build/outputs/apk/app-debug.apk #To install it to the device
adb shell am start -n $PACKAGE/$PACKAGE.$ACTIVITY #To launch the application in the device
, donde $ PAQUETE es el paquete de desarrollo y $ ACTIVIDAD es la actividad que se lanzará (la actividad del iniciador).
He estado escribiendo un script bash para hacer esto , con otras pocas características.
Una forma más flexible de hacerlo es mediante el uso de mono:
task runDebug (type: Exec, dependsOn: ''installDebug'') {
commandLine android.getAdbExe().toString(), "shell",
"monkey",
"-p", "your.package.name.debugsuffix",
"-c", "android.intent.category.LAUNCHER", "1"
}
Algunas ventajas de este método:
-
getAdbExe
no requiere que adb esté en la ruta y usa la versión de adb del sdk apuntado enlocal.properties
. - La herramienta
monkey
permite enviar un intento de iniciador, por lo que no es necesario que conozca el nombre de su actividad.
Una frase de línea:
Desarrollar proyecto e instalar apk generado y abrir aplicación en el dispositivo
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
Ya que está usando Gradle, podría simplemente agregar su propia tarea en build.gradle
task appStart(type: Exec, dependsOn: ''installDebug'') {
// linux
commandLine ''adb'', ''shell'', ''am'', ''start'', ''-n'', ''com.example/.MyActivity''
// windows
// commandLine ''cmd'', ''/c'', ''adb'', ''shell'', ''am'', ''start'', ''-n'', ''com.example/.MyActivity''
}
luego llámalo en la raíz de tu proyecto
$ gradle appStart
Actualizar:
Si está utilizando applicationIdSuffix ".debug"
, agregue .debug
a la aplicación, pero deje la actividad intacta:
''com.example.debug/com.example.MyActivity''
1. Desarrollar proyecto, instalar apk generado en el dispositivo
# at the root dir of project
$ gradle installDebug
2. Abra la aplicación en el dispositivo
$ adb shell am start -n yourpackagename/.activityname
$ gradle installDebug
Esto impulsará la aplicación de compilación de depuración al dispositivo, pero debe iniciarla manualmente.
task appStart(type: Exec, dependsOn: ''installDebug'') {
commandLine android.adbExe, ''shell'', ''am'', ''start'', ''-n'', ''com.example/.MyActivity''
}