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?
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?
Respuestas:
$ gradle installDebug
Esto enviará el apk de la compilación de depuración al dispositivo, pero debe iniciar la aplicación manualmente.
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 appStart
Actualizar:
Si está utilizando applicationIdSuffix ".debug"
, agregue solo .debug
al appId pero deje la actividad intacta:
'com.example.debug/com.example.MyActivity'
'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 installDebug
2. Abra la aplicación en el dispositivo
$ adb shell am start -n yourpackagename/.activityname
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"
#Ejecuta el paso 2 solo cuando el paso 1 es exitoso
Oració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.MainActivity
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 $ 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.
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:
getAdbExe
no requiere que adb esté en la ruta y usa la versión adb del sdk apuntado en local.properties
.monkey
herramienta le permite enviar una intención de iniciador, por lo que no es necesario que sepa el nombre de su actividad.adb shell am start your.package.name.debugsuffix\.Activity
Compilar -> 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]
Escribí esta tarea para poder instalar y también abrir la aplicación en el dispositivo. Como tenía varios identificadores de aplicaciones buildTypes
y flavors
con 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 cada install{variant}
tarea que ya tiene.
gradle tasks
Es útil ver las tareas listas para usar, que incluyen la instalación (pero no el inicio como se indica a continuación)