Jelly Bean OSを実行しているAndroidデバイスが1つあります。
パッケージ名を知っている場合、プロセスが実行されているか、ADB
コマンドを使用していないことを検出する方法はありますか?
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を返し、それ以外の場合は空の文字列を返します。
使用できます
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}'
実行中の場合は名前が表示され、そうでない場合は結果が返されません。
フォーカスされている現在のアプリのパッケージ名を直接取得する場合は、このadbコマンドを使用します-
adb Shell dumpsys window windows | grep -E 'mFocusedApp'| cut -d / -f 1 | cut -d " " -f 7
Adbコマンドの結果からの余分な情報は、cutコマンドを使用して削除されます。 here の元のソリューション。
topがadbで利用できることに気付いたので、次のようなことができます
adb Shell
top -m 5
上位5つのCPUホグプロセスを監視します。
または
adb Shell top -m 5 -s cpu -n 20 |tee top.log
これを1分間記録し、出力をコンピューター上のファイルに収集します。
試してください:
adb Shell pidof <myPackageName>
アプリケーションが実行されていない場合、標準出力は空になります。それ以外の場合は、PIDが出力されます。
または、pgrep
またはProcess Grepを使用することもできます。 (Busyboxが必要です)
adb Shell pgrep com.example.app
を実行すると、プロセスIDのみが表示されます。
提案として、AndroidはLinuxであるため、adb Shell
で最も基本的なLinuxコマンドを使用して、ナビゲート/制御できます。 :D