Cosa dice davvero la domanda: puoi impartire comandi direttamente a gradlew tramite la riga di comando per creare, creare pacchetti e distribuire su un dispositivo?
Cosa dice davvero la domanda: puoi impartire comandi direttamente a gradlew tramite la riga di comando per creare, creare pacchetti e distribuire su un dispositivo?
Risposte:
$ gradle installDebug
Questo spingerà l'apk della build di debug sul dispositivo, ma dovrai avviare manualmente l'applicazione.
Dato che stai usando Gradle, puoi semplicemente aggiungere la tua attività in 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'
}
quindi chiamalo nella root del tuo progetto
$ gradle appStart
Aggiornare:
Se stai usando applicationIdSuffix ".debug"
, aggiungi solo .debug
ad appId ma lascia inalterata l'attività:
'com.example.debug/com.example.MyActivity'
'com.your.packagename/.path.relative.to.your.packagename.MyActivity'
posto di 'com.example/.MyActivity'
se la tua attività non è nella radice del tuo pacchetto.
1. Compilare il progetto, installare l'apk generato sul dispositivo
# at the root dir of project
$ gradle installDebug
2. Apri l'app sul dispositivo
$ adb shell am start -n yourpackagename/.activityname
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"
#Runs step2 Solo quando lo Step 1 ha esito
Una frase di una riga:
Crea il progetto e installa l'apk generato e apri l'app sul dispositivo
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
Sono disponibili tre comandi per eseguire questa operazione:
./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
, dove $ PACKAGE è il pacchetto di sviluppo e $ ACTIVITY è l'attività da lanciare (l'attività di avvio).
Ho scritto uno script bash per farlo , con altre poche funzionalità.
Un modo più flessibile per farlo è usare monkey:
task runDebug (type: Exec, dependsOn: 'installDebug') {
commandLine android.getAdbExe().toString(), "shell",
"monkey",
"-p", "your.package.name.debugsuffix",
"-c", "android.intent.category.LAUNCHER", "1"
}
Alcuni vantaggi di questo metodo:
getAdbExe
non richiede che adb sia sul percorso e utilizza la versione adb dall'SDK puntato in local.properties
.monkey
strumento ti consente di inviare un intento di avvio, quindi non è necessario conoscere il nome della tua attività.adb shell am start your.package.name.debugsuffix\.Activity
Compila -> disinstalla vecchia versione -> installa nuova versione -> esegui applicazione.
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]
Oppure, se vuoi installare ed eseguire l'applicazione nel tipo di debug.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]
Ho scritto questa attività per poter installare e anche aprire l'applicazione sul dispositivo. Poiché avevo più buildTypes
e flavors
con diversi ID applicazione, non era possibile codificare il nome del pacchetto. Quindi l'ho scritto così invece:
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(" ")
}
}
}
}
Questo ti darebbe open{variant}
per ogni install{variant}
compito che hai già.
gradle tasks
è utile vedere le attività pronte all'uso - che include l'installazione (ma non l'avvio come indicato di seguito)