Was die Frage wirklich sagt - können Sie Befehle direkt über die Befehlszeile an gradlew senden, um sie auf einem Gerät zu erstellen, zu verpacken und bereitzustellen?
Was die Frage wirklich sagt - können Sie Befehle direkt über die Befehlszeile an gradlew senden, um sie auf einem Gerät zu erstellen, zu verpacken und bereitzustellen?
Antworten:
$ gradle installDebug
Dadurch wird das Debug-Build-Apk auf das Gerät übertragen, Sie müssen die Anwendung jedoch manuell starten.
Da Sie Gradle verwenden, können Sie einfach Ihre eigene Aufgabe in build.gradle hinzufügen
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'
}
Rufen Sie es dann in Ihrem Projektstamm auf
$ gradle appStart
Aktualisieren:
Wenn Sie verwenden applicationIdSuffix ".debug", fügen Sie nur.debug zur AppId hinzu , lassen Sie die Aktivität jedoch unberührt:
'com.example.debug/com.example.MyActivity'
'com.your.packagename/.path.relative.to.your.packagename.MyActivity'anstelle von sein, 'com.example/.MyActivity'wenn sich Ihre Aktivität nicht im Stammverzeichnis Ihres Pakets befindet.
1. Projekt erstellen, generierte apk auf Gerät installieren
# at the root dir of project
$ gradle installDebug
2. Öffnen Sie die App auf dem Gerät
$ adb shell am start -n yourpackagename/.activityname
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"#Läuft Schritt 2 Nur wenn Schritt 1 erfolgreich ist
Einzeiliger Satz:
Projekt erstellen & generierte apk installieren & App auf Gerät öffnen
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
Es gibt drei Befehle, um dies zu erreichen:
./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 deviceDabei ist $ PACKAGE das Entwicklungspaket und $ ACTIVITY die zu startende Aktivität (die Launcher-Aktivität).
Ich habe ein Bash-Skript geschrieben, um dies zu tun , mit anderen wenigen Funktionen.
Eine flexiblere Möglichkeit ist die Verwendung von Affen:
task runDebug (type: Exec, dependsOn: 'installDebug') {
commandLine android.getAdbExe().toString(), "shell",
"monkey",
"-p", "your.package.name.debugsuffix",
"-c", "android.intent.category.LAUNCHER", "1"
}
Einige Vorteile dieser Methode:
getAdbExeerfordert nicht, dass adb auf dem Pfad ist und verwendet die adb-Version von dem SDK, auf das in verwiesen wird local.properties.monkeyTool können Sie eine Startabsicht senden, sodass Sie den Namen Ihrer Aktivität nicht kennen müssen.adb shell am start your.package.name.debugsuffix\.Activity
Erstellen -> alte Version deinstallieren -> neue Version installieren -> Anwendung ausführen.
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]
Oder wenn Sie eine Anwendung im Debug-Typ installieren und ausführen möchten.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]
Ich habe diese Aufgabe geschrieben, um die Anwendung auf dem Gerät installieren und auch öffnen zu können. Da ich mehrere buildTypesund flavorsmit unterschiedlichen Anwendungs-IDs hatte, war es nicht möglich, den Paketnamen fest zu codieren. Also habe ich es stattdessen so geschrieben:
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(" ")
}
}
}
}
Dies würde Ihnen open{variant}für jede install{variant}Aufgabe geben, die Sie bereits haben.
gradle tasksist hilfreich, um die sofort einsatzbereiten Aufgaben zu sehen - einschließlich der Installation (aber nicht wie unten angegeben)