What the question says really - can you issue any commands directly to gradlew via the command line to build, package and deploy to a device?
A more flexible way to do it is by using monkey:
task runDebug (type: Exec, dependsOn: 'installDebug') {
commandLine android.getAdbExe().toString(), "shell",
"monkey",
"-p", "your.package.name.debugsuffix",
"-c", "android.intent.category.LAUNCHER", "1"
}
Some advantages to this method:
getAdbExe
doesn't require adb to be on the path and uses the adb version from the sdk pointed to in local.properties
.monkey
tool allows you to send a launcher intent, so you aren't required to know the name of your activity. One line sentence:
Build project & Install generated apk & Open app on device
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
I wrote this task to be able to install and also open the application on the device. Since I had multiple buildTypes
and flavors
with different application ids, it was not feasible to hard code the package name. So I wrote it like this instead:
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(" ")
}
}
}
}
This would give you open{variant}
for every install{variant}
task you already have.