Lo que dice la pregunta realmente: ¿puede emitir comandos directamente a gradlew a través de la línea de comandos para compilar, empaquetar e implementar en un dispositivo?
android
gradle
android-studio
gradlew
Matt Whetton
fuente
fuente

gradle tasksEs útil ver las tareas listas para usar, que incluyen la instalación (pero no el inicio como se indica a continuación)Respuestas:
Esto enviará el apk de la compilación de depuración al dispositivo, pero debe iniciar la aplicación manualmente.
fuente
Dado que está utilizando Gradle, puede 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 appStartActualizar:
Si está utilizando
applicationIdSuffix ".debug", agregue solo.debugal appId pero deje la actividad intacta:'com.example.debug/com.example.MyActivity'fuente
'com.your.packagename/.path.relative.to.your.packagename.MyActivity'lugar de'com.example/.MyActivity'si su actividad no está en la raíz de su paquete.1. Construya el proyecto, instale el apk generado en el dispositivo
# at the root dir of project $ gradle installDebug2. Abra la aplicación en el dispositivo
fuente
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"#Ejecuta el paso 2 solo cuando el paso 1 es exitosoOración de una línea:
Cree un proyecto e instale el apk generado y la aplicación abierta en el dispositivo
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivityfuente
Hay tres comandos para lograr esto:
./gradlew assembleDebug #To build the projectadb install -r ./app/build/outputs/apk/app-debug.apk #To install it to the deviceadb shell am start -n $PACKAGE/$PACKAGE.$ACTIVITY #To launch the application in the device, donde $ PACKAGE es el paquete de desarrollo y $ ACTIVITY es la actividad que se lanzará (la actividad del lanzador).He estado escribiendo un script bash para hacer esto , con otras características.
fuente
Una forma más flexible de hacerlo es usando monkey:
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:
getAdbExeno requiere que adb esté en la ruta y usa la versión adb del sdk apuntado enlocal.properties.monkeyherramienta le permite enviar una intención de iniciador, por lo que no es necesario que sepa el nombre de su actividad.fuente
adb shell am start your.package.name.debugsuffix\.ActivityCompilar -> desinstalar la versión anterior -> instalar la 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 tipo de depuración.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]fuente
task appStart(type: Exec, dependsOn: 'installDebug') { commandLine android.adbExe, 'shell', 'am', 'start', '-n', 'com.example/.MyActivity' }fuente
Escribí esta tarea para poder instalar y también abrir la aplicación en el dispositivo. Como tenía varios identificadores de aplicaciones
buildTypesyflavorscon diferentes, no era 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 cadainstall{variant}tarea que ya tiene.fuente