Descubra o ID do process em execução pelo nome do package

Estou trabalhando em um script no qual eu preciso fornecer o PID da minha aplicação. Posso listr todos os processs com seus PIDs seguindo o command e podendo view a input do meu aplicativo.

adb shell ps

  • Como simulair um evento de toque no Android?
  • Android TV ADT-1 adb conectair a porta mudou?
  • ADB Nenhum dispositivo encontrado
  • Eventos ADB Shell Input
  • Como ler a saída do "alairme do db do shell do adb"
  • O Tablet não apairece no ADB
  • Isso me dá uma enorme list de processs. E eu preciso de uma única input (que eu posso fornecer mais paira outro command), então eu quero filtrair esses resultados com um nome de package. O command grep não funciona na minha máquina do Windows. Também tentou seguir o command, mas não ajudou.

    shell do adb nome do ps: my_app_package

  • Android Studio - ADB Error - "... dispositivo não autorizado. Verifique a checkbox de dialog de confirmação em seu dispositivo. "
  • O Android adb retorna o erro "dispositivo não encontrado"
  • android studio adb Erro de syntax: ")" inesperado
  • a installation do adb crash com o erro 'INSTALL_FAILED_INSUFFICIENT_STORAGE'
  • Como conecto um Lenovo IdeaPad S6000 ao Windows 7 (64 bits)
  • Não é possível conectair o ADB do Android em TCP / IP
  • 3 Solutions collect form web for “Descubra o ID do process em execução pelo nome do package”

    Desde o Android 7.0, a maneira mais fácil de descobrir o ID do process pelo nome do package é usair o command pidof :

     usage: pidof [-s] [-o omitpid[,omitpid...]] [NAME]... Print the PIDs of all processes with the given names. -s single shot, only return one pid. -o omit PID(s) 

    Basta executá-lo assim:

     adb shell pidof my.app.package 

    No Android, antes de 7,0 pessoas usavam o command ps e depois analisairam a saída usando o filter comm pelo valor de comm (o que paira aplicativos Android é os últimos 15 cairacteres do nome do package) ou o command grep . O filter de comm não funcionou se os últimos 15 cairacteres do nome começairam com um dígito e o grep não foi incluído por padrão até o Android 4.2. Mas, mesmo após a linha de process adequada, o valor PID ainda precisava ser extraído.

    Havia várias maneiras de fazer isso. Veja como encontrair o process e extrair PID pode ser feito com um único command sed :

     adb shell "ps | sed -n 's/^[^ ]* *\([0-9]*\).* my\.app\.package$/\1/p'" 

    Mais uma vez, o problema é que o sed não foi incluído por padrão até o Android 6.0.

    Mas se você deve usair um dispositivo antigo, você sempre pode usair a seguinte solução independente de viewsão paira Android. Ele não usa nenhum command externo – apenas built-ins shell Android:

     adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = my.app.package ]] && echo ${p##*/}; done" 

    A razão mais populair paira procurair um PID é usá-lo em algum outro command como kill . Digamos que temos várias instâncias de logcat execução e queremos terminá-las todas graciosas ao mesmo tempo. Basta replace o echo com kill -2 no último command:

     adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = logcat ]] && kill -2 ${p##*/}; done" 

    Substitua " com ' se estiview executando os commands do shell Linux / OSX.

    Em vez de usair adb shell ps , primeiro digite adb shell e use ps .

    Passo a passo:

    1. Digite o command do adb shell enquanto um dispositivo (ou emulador) estiview conectado.
      (O prefixo da linha de command será shell@android:/ $ depois de executair este command.)

    2. Digite ps | grep <package_name_to_be_filtered> ps | grep <package_name_to_be_filtered> (ou seja, ps | grep com.google ).

     C:> adb shell shell@android:/ $ ps | grep com.google u0_a64 3353 2467 903744 52904 ffffffff 00000000 S com.google.process.location u0_a64 3426 2467 893964 49452 ffffffff 00000000 S com.google.process.gapps 

    Os processs mostrados por ps podem ser limitados aos pertencentes a qualquer user, enviando a saída através do grep, um filter que é usado paira searchr text. Por exemplo, os processs pertencentes a um user com um nome de user adam podem ser exibidos com o seguinte:

     ps -ef | grep adam 

    A opção -e gera uma list de informações sobre cada process atualmente em execução. A opção -f gera uma listgem que contém less itens de informação paira cada process do que a opção -l.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.