web-dev-qa-db-ja.com

ADBコマンドを使用して実行中のアプリを検出する方法

Jelly Bean OSを実行しているAndroidデバイスが1つあります。

パッケージ名を知っている場合、プロセスが実行されているか、ADBコマンドを使用していないことを検出する方法はありますか?

48
Rinkal Bhanderi

Grepを使用する必要はありません。 Androidのpsは、COMM値(Javaアプリの場合はパッケージ名の最後の15文字)でフィルタリングできます

com.Android.phoneが実行されているかどうかを確認するとします。

adb Shell ps m.Android.phone
USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
radio     1389  277   515960 33964 ffffffff 4024c270 S com.Android.phone

COMM valueオプションによるフィルタリング 削除済み Android 7.0のpsから。 Android 7.0で実行中のプロセスを名前で確認するには、pidofコマンドを使用できます。

adb Shell pidof com.Android.phone

そのようなプロセスが見つかった場合はPIDを返し、それ以外の場合は空の文字列を返します。

66
Alex P.

使用できます

adb Shell ps | grep apps | awk '{print $9}'

次のような出力を生成するには:

com.google.process.gapps
com.google.Android.apps.uploader
com.google.Android.apps.plus
com.google.Android.apps.maps
com.google.Android.apps.maps:GoogleLocationService
com.google.Android.apps.maps:FriendService
com.google.Android.apps.maps:LocationFriendService

adb Shell psは、Androidデバイスで実行中のすべてのプロセスのリストを返します。grepアプリは、「apps」を含む行を検索します。上記のように、すべてcom.google.Android.APPSです。またはGAPPSの場合、awkは9番目の列(この場合はパッケージ名)を抽出します。

特定のパッケージを検索するには

adb Shell ps | grep PACKAGE.NAME.HERE | awk '{print $9}'

すなわちadb Shell ps | grep com.we7.player | awk '{print $9}'

実行中の場合は名前が表示され、そうでない場合は結果が返されません。

31
o0rebelious0o

フォーカスされている現在のアプリのパッケージ名を直接取得する場合は、このadbコマンドを使用します-

adb Shell dumpsys window windows | grep -E 'mFocusedApp'| cut -d / -f 1 | cut -d " " -f 7

Adbコマンドの結果からの余分な情報は、cutコマンドを使用して削除されます。 here の元のソリューション。

11
abhiank

topadbで利用できることに気付いたので、次のようなことができます

  adb Shell
  top -m 5

上位5つのCPUホグプロセスを監視します。

または

  adb Shell top -m 5 -s cpu -n 20 |tee top.log

これを1分間記録し、出力をコンピューター上のファイルに収集します。

9
StefanQ

試してください:

adb Shell pidof <myPackageName>

アプリケーションが実行されていない場合、標準出力は空になります。それ以外の場合は、PIDが出力されます。

5
Chris Sears

または、pgrepまたはProcess Grepを使用することもできます。 (Busyboxが必要です)

adb Shell pgrep com.example.appを実行すると、プロセスIDのみが表示されます。

提案として、AndroidはLinuxであるため、adb Shellで最も基本的なLinuxコマンドを使用して、ナビゲート/制御できます。 :D

3
deubaka