Muito obrigado, eu fiz isso Função Shell em ~ / .bash_profile ser muito mais rápido function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }e seu usoandroidrun com.example.test
é possível executar a atividade padrão, em vez de ser tão específico para qual atividade eu pretendo que ela deva iniciar?
desenvolvedor android
1
Tive problemas para encontrar o aplicativo e a atividade. Eu usei essa linha de tubulação adb logcat | grep --line-buffered ActivityManager | grep --line-bufferedpara listar todos os aplicativos que foram exibidos.
precisa
299
É possível executar o aplicativo especificando o nome do pacote apenas usando a ferramenta monkey , seguindo este padrão:
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).
Iniciador é o padrão. Você pode simplificar paraadb shell monkey -p your.app.package.name 1
Androiderson
3
É possível usar o nome do arquivo APK em vez do nome do pacote? Suponha que eu possua um arquivo APK e que queira instalá-lo e executá-lo, é possível?
desenvolvedor android
1
E se eu receber um erro: nenhuma atividade encontrada para execução. abortando ?
IgorGanapolsky
3
@IgorGanapolsky, se nenhuma atividade for encontrada, é um aplicativo de Serviço e não tem Atividade.
M3nda # 6/16
1
@IgorGanapolsky se é um uso de serviço adb shell am startservice com.some.package.name/.YourServiceSubClassNamever aqui: stackoverflow.com/a/18703083/211292
Thomasw
123
Ou você pode usar isso:
adb shell am start -n com.package.name/.ActivityName
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.
para Windows, você pode tentar com o Cygwin (não testado)
dljava
3
Sua postagem me fez procurar AWK. Fui em frente e recriei seu script. pastebin.com/X7X1SsFa
Kyle
2
Isso é fabuloso. Por que este não é um comando adb padrão que nunca saberemos.
precisa
Você não precisará do aapt no caminho (contanto que "android" seja) se definir o PATH no script adb-run.sh, assim: PATH = $ (dirname $ (qual android)) /. ./build-tools/20.0.0:$PATH
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 amadicionar o sinalizador FLAG_ACTIVITY_NEW_TASK .
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.
Eu tenho um aplicativo player, capaz de transmitir um vídeo a partir de URL, como posso transmitir esse URL como parâmetro e transmitir a partir desse URL? suponha um URL do youtube?
Respostas:
Ou você pode usar isso diretamente:
Você também pode especificar ações a serem filtradas pelos seus filtros de intenção:
fonte
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 oam
comando. Você pode descobrir mais em developer.android.com/tools/help/adb.html#amadb 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:
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).
fonte
adb shell monkey -p your.app.package.name 1
adb shell am startservice com.some.package.name/.YourServiceSubClassName
ver aqui: stackoverflow.com/a/18703083/211292Ou você pode usar isso:
fonte
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:
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.
fonte
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: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 .fonte
Também podemos iniciar um aplicativo conhecendo o tipo de aplicativo e alimentando-o com dados:
Este comando exibe os players de vídeo disponíveis para reproduzir o arquivo sample.3gp
fonte
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
fonte
abra ~ / .bash_profile e adicione essas funções bash ao final do arquivo
abra a pasta do projeto Android
fonte
app-debug
faz?monkey --pct-syskeys 0
para placas de desenvolvimentoSem esse argumento, o aplicativo não será aberto em uma placa de desenvolvimento sem teclas / display:
e falha com erro:
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
fonte
Ex:
Você pode usar o aplicativo APK-INFO para conhecer a lista de atividades do aplicativo em relação a cada pacote de aplicativos
fonte
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.
fonte