O que a pergunta diz realmente - você pode emitir qualquer comando diretamente para gradlew por meio da linha de comando para construir, empacotar e implantar em um dispositivo?
O que a pergunta diz realmente - você pode emitir qualquer comando diretamente para gradlew por meio da linha de comando para construir, empacotar e implantar em um dispositivo?
Respostas:
$ gradle installDebug
Isso enviará o apk de compilação de depuração para o dispositivo, mas você terá que iniciar o aplicativo manualmente.
Como você está usando o Gradle, pode simplesmente adicionar sua própria tarefa em 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'
}
em seguida, chame-o na raiz do seu projeto
$ gradle appStart
Atualizar:
Se você estiver usando applicationIdSuffix ".debug"
, adicione .debug
ao appId apenas, mas não altere a atividade:
'com.example.debug/com.example.MyActivity'
'com.your.packagename/.path.relative.to.your.packagename.MyActivity'
vez de 'com.example/.MyActivity'
se sua atividade não estiver na raiz do pacote.
1. Construir projeto, instalar apk gerado no dispositivo
# at the root dir of project
$ gradle installDebug
2. Abra o aplicativo no dispositivo
$ adb shell am start -n yourpackagename/.activityname
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"
# Executa a etapa 2 apenas quando a Etapa 1 é bem-sucedida
Frase de uma linha:
Crie o projeto e instale o apk gerado e abra o aplicativo no dispositivo
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
Existem três comandos para fazer isso:
./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
, em que $ PACKAGE é o pacote de desenvolvimento e $ ACTIVITY é a atividade a ser iniciada (a atividade do iniciador).
Estou escrevendo um script bash para fazer isso , com outros poucos recursos.
Uma maneira mais flexível de fazer isso é usando o macaco:
task runDebug (type: Exec, dependsOn: 'installDebug') {
commandLine android.getAdbExe().toString(), "shell",
"monkey",
"-p", "your.package.name.debugsuffix",
"-c", "android.intent.category.LAUNCHER", "1"
}
Algumas vantagens deste método:
getAdbExe
não requer que o adb esteja no caminho e usa a versão do adb do SDK apontado em local.properties
.monkey
ferramenta permite que você envie uma intenção do iniciador, então você não precisa saber o nome da sua atividade.adb shell am start your.package.name.debugsuffix\.Activity
Construir -> desinstalar versão antiga -> instalar nova versão -> executar aplicativo.
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 se você deseja instalar e executar o aplicativo no tipo de depuração.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]
Escrevi esta tarefa para poder instalar e também abrir o aplicativo no dispositivo. Desde que eu tinha múltipla buildTypes
e flavors
com diferentes ids de aplicação, não era viável para codificar o nome do pacote. Então eu escrevi assim:
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(" ")
}
}
}
}
Isso lhe daria open{variant}
para cada install{variant}
tarefa que você já tem.
gradle tasks
é útil ver as tarefas prontas para uso - que incluem a instalação (mas não começando conforme declarado abaixo)