Android - adbコマンドで特定のパッケージのプロセスの終了

adbコマンドで特定のパッケージのプロセスを終了させる方法を紹介します。

1. adb shell am force-stopコマンドでプロセスの終了

次のコマンドは、 com.google.android.youtubeパッケージを強制的に中断して、stop状態に変更します。この過程で、アプリのプロセスは終了します。

$ adb shell am force-stop com.google.android.youtube

2. adb shell killコマンドでプロセスの終了

パッケージのpidを探して、killコマンドでそのpidを終了させることができます。

特定のパッケージのPIDを確認:adb shell pidof PACKAGE_NAME

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

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

Appが実行されていない場合、実行中のプロセスがないので、何も出力されません。

特定のPIDのプロセスを終了:adb shell kill -9 PID

次のコマンドは、PIDを終了させます。ルーティングされていない端末で実行すると、アクセス権の問題で失敗します。

$ adb shell kill -9 5862
/system/bin/sh: kill: 5862: Operation not permitted

次のようにルーティングをして、再度コマンドを入力すると、プロセスが終了します。

$ adb root
restarting adbd as root

$ adb shell kill -9 5862

Youtubeのpidを再び探してみると、実行中のプロセスがなくては何も出力されません。

$ adb shell pidof 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