Respostas:
adb shell
am start -n com.package.name/com.package.name.ActivityName
Ou você pode usar isso diretamente:
adb shell am start -n com.package.name/com.package.name.ActivityName
Você também pode especificar ações a serem filtradas pelos seus filtros de intenção:
am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName
function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }
e seu usoandroidrun com.example.test
adb shell am
fornecerá uma lista de outras opções para passar para o am
comando. Você pode descobrir mais em developer.android.com/tools/help/adb.html#am
adb logcat | grep --line-buffered ActivityManager | grep --line-buffered
para listar todos os aplicativos que foram exibidos.
É possível executar o aplicativo especificando o nome do pacote apenas usando a ferramenta monkey , seguindo este padrão:
adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1
O comando é usado para executar o aplicativo usando a ferramenta monkey, que gera entrada aleatória para o aplicativo. A última parte do comando é um número inteiro que especifica o número de entradas aleatórias geradas para o aplicativo. Nesse caso, o número é 1, que de fato é usado para iniciar o aplicativo (clique no ícone).
adb shell monkey -p your.app.package.name 1
adb shell am startservice com.some.package.name/.YourServiceSubClassName
ver aqui: stackoverflow.com/a/18703083/211292
Ou você pode usar isso:
adb shell am start -n com.package.name/.ActivityName
monkey -p com.package.name 1
viaadb shell
Os usuários linux / mac também podem criar um script para executar um apk com algo como o seguinte:
crie um arquivo chamado "adb-run.sh" com estas 3 linhas:
pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
adb shell am start -n $pkg/$act
depois "chmod + x adb-run.sh" para torná-lo executável.
agora você pode simplesmente:
adb-run.sh myapp.apk
O benefício aqui é que você não precisa saber o nome do pacote ou o nome da atividade iniciável. Da mesma forma, você pode criar "adb-uninstall.sh myapp.apk"
Nota: Isso requer que você tenha o apap no seu caminho. Você pode encontrá-lo na nova pasta de ferramentas de compilação no SDK.
Além disso, quero mencionar mais uma coisa.
Quando você inicia um aplicativo adb shell am
, ele adiciona automaticamente o sinalizador FLAG_ACTIVITY_NEW_TASK, o que altera o comportamento. Veja o código .
Por exemplo, se você iniciar a atividade da Play Store adb shell am
, pressionar o botão ' Voltar ' (botão voltar do hardware) não levará o seu aplicativo; em vez disso, levará a atividade anterior da Play Store se houver alguma (se não houver tarefa da Play Store , você levaria o seu aplicativo). A documentação do FLAG_ACTIVITY_NEW_TASK diz:
se uma tarefa já estiver em execução para a atividade que você está iniciando agora, uma nova atividade não será iniciada; em vez disso, a tarefa atual será simplesmente trazida para a frente da tela com o estado em que foi a última
Isso me levou a gastar algumas horas para descobrir o que deu errado.
Portanto, lembre-se de adb shell am
adicionar o sinalizador FLAG_ACTIVITY_NEW_TASK .
Também podemos iniciar um aplicativo conhecendo o tipo de aplicativo e alimentando-o com dados:
adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW
Este comando exibe os players de vídeo disponíveis para reproduzir o arquivo sample.3gp
Etapa 1: obtenha primeiro o nome do pacote dos aplicativos instalados no seu dispositivo, usando:
adb shell pm list packages
Etapa 2: você receberá todos os nomes dos pacotes e copie o nome que deseja começar a usar adb.
Etapa 3: adicione o nome do pacote desejado no comando abaixo.
adb shell monkey -p 'your package name' -v 500
Por exemplo:
adb shell monkey -p com.estrongs.android.pop -v 500
para iniciar o Es explorer.
abra ~ / .bash_profile e adicione essas funções bash ao final do arquivo
function androidinstall(){
adb install -r ./bin/$1.apk
}
function androidrun(){
ant clean debug
adb shell am start -n $1/$1.$2
}
abra a pasta do projeto Android
androidinstall app-debug && androidrun com.example.app MainActivity
app-debug
faz?
monkey --pct-syskeys 0
para placas de desenvolvimento
Sem esse argumento, o aplicativo não será aberto em uma placa de desenvolvimento sem teclas / display:
adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1
e falha com erro:
SYS_KEYS has no physical keys but with factor 2.0%
Testado em HiKey960, Android O AOSP.
Aprendido em: https://github.com/ARM-software/lisa/pull/408
Também perguntado em: teste de macaco: se o sistema Android não possui chaves físicas, quais são os parâmetros que devem ser incluídos no comando
Tente isso, para abrir um aplicativo de foto do Android e com um arquivo de imagem específico para abrir como parâmetro.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
Ele funcionará no Android mais recente; nenhum pop-up virá para selecionar um aplicativo para abrir, pois você está dando um aplicativo específico para o qual deseja abrir sua imagem.