Android - adbコマンドで特定のパッケージのPIDを検索

adbコマンドで特定のパッケージのPIDを見つける方法を紹介します。

1. adb shell pidof PACKAGE_NAME

次のコマンドは、 com.google.android.youtubeパッケージのpidを出力します。 5862がYoutubeのPIDです。

$ adb shell pidof com.google.android.youtube
5862

Appが実行されていない場合、PIDがないので、何も出力されません。

2. adb shell ps -ef | grep PACKAGE_NAME

次のようにシェルのpsを利用して、特定のパッケージのPIDを見つけることができます。 5862がYoutubeのPIDです。

$ adb shell ps -ef | grep com.google.android.youtube
u0_a121        5862    291 18 15:03:08 ?    00:00:05 com.google.android.youtube

パッケージ名を確認

adb uninstallコマンドでパッケージを削除するには、package nameを知っている必要があります。

次のコマンドを使用すると、デバイスにインストールされたすべてのパッケージのリストが出力されます。アプリ名とパッケージ名が似てあれば、ここで見つけることができます。

$ adb shell pidof com.google.android.youtube

package:com.google.android.networkstack.tethering
package:com.android.cts.priv.ctsshim
package:com.google.android.youtube
package:com.android.internal.display.cutout.emulation.corner
package:com.google.android.ext.services
package:com.android.internal.display.cutout.emulation.double
package:com.android.providers.telephony
package:com.android.dynsystem
package:com.android.theme.icon.pebble
...

パッケージ名がアプリの名前と似ていない場合は、上記の方法でパッケージ名を探すのは容易ではありません。

こういうときは、アプリを起動させて、下記のようなログキャットコマンドで実行されるアプリのActivity名と同様のpackage nameを推測することができます。

$ adb shell logcat -b events | grep wm_on_re
07-11 14:44:34.246   923   923 I wm_on_resume_called: [152199755,com.android.settings.FallbackHome,RESUME_ACTIVITY]
07-11 14:44:37.114  1045  1045 I wm_on_resume_called: [218164884,com.google.android.apps.nexuslauncher.NexusLauncherActivity,RESUME_ACTIVITY]
07-11 14:49:55.441  4941  4941 I wm_on_resume_called: [224219331,com.google.android.apps.youtube.app.WatchWhileActivity,RESUME_ACTIVITY]
codechachaCopyright ©2019 codechacha