Ce que dit vraiment la question - pouvez-vous émettre des commandes directement à gradlew via la ligne de commande pour créer, empaqueter et déployer sur un appareil?
Ce que dit vraiment la question - pouvez-vous émettre des commandes directement à gradlew via la ligne de commande pour créer, empaqueter et déployer sur un appareil?
Réponses:
$ gradle installDebug
Cela poussera l'apk de compilation de débogage vers l'appareil, mais vous devez démarrer manuellement l'application.
Puisque vous utilisez Gradle, vous pouvez simplement ajouter votre propre tâche dans 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'
}
puis appelez-le dans la racine de votre projet
$ gradle appStart
Mettre à jour:
Si vous utilisez applicationIdSuffix ".debug"
, ajoutez .debug
à la appId ne mais laisser l'activité intacte:
'com.example.debug/com.example.MyActivity'
'com.your.packagename/.path.relative.to.your.packagename.MyActivity'
au lieu de 'com.example/.MyActivity'
si votre activité n'est pas à la racine de votre package.
1. Construisez le projet, installez l'apk généré sur l'appareil
# at the root dir of project
$ gradle installDebug
2. Ouvrez l'application sur l'appareil
$ adb shell am start -n yourpackagename/.activityname
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"
#Runs step2 Seulement lorsque l'étape 1 est réussie
Phrase d'une ligne:
Construire le projet et installer l'apk généré et ouvrir l'application sur l'appareil
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
Il existe trois commandes pour accomplir cela:
./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
, où $ PACKAGE est le package de développement et $ ACTIVITY est l'activité à lancer (l'activité du lanceur).
J'ai écrit un script bash pour ce faire , avec quelques autres fonctionnalités.
Une façon plus flexible de le faire consiste à utiliser monkey:
task runDebug (type: Exec, dependsOn: 'installDebug') {
commandLine android.getAdbExe().toString(), "shell",
"monkey",
"-p", "your.package.name.debugsuffix",
"-c", "android.intent.category.LAUNCHER", "1"
}
Quelques avantages de cette méthode:
getAdbExe
ne nécessite pas que adb soit sur le chemin et utilise la version adb du sdk pointé dans local.properties
.monkey
outil vous permet d'envoyer une intention de lanceur, vous n'êtes donc pas obligé de connaître le nom de votre activité.adb shell am start your.package.name.debugsuffix\.Activity
Construire -> désinstaller l'ancienne version -> installer une nouvelle version -> exécuter l'application.
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]
Ou si vous souhaitez installer et exécuter l'application en type de débogage.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]
J'ai écrit cette tâche pour pouvoir installer et également ouvrir l'application sur l'appareil. Comme j'avais plusieurs identifiants d'application buildTypes
et flavors
avec différents, il n'était pas possible de coder en dur le nom du package. Alors je l'ai écrit comme ça à la place:
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(" ")
}
}
}
}
Cela vous donnerait open{variant}
pour chaque install{variant}
tâche que vous avez déjà.
gradle tasks
est utile pour voir les tâches prêtes à l'emploi - qui comprend l'installation (mais pas le démarrage comme indiqué ci-dessous)