【问题标题】:How to kill native applications from 'adb shell'?如何从“adb shell”中杀死本机应用程序?
【发布时间】:2012-03-07 13:27:24
【问题描述】:

我可以使用am start -a action -n packagename/activity 启动本机应用程序。如何从 adb shell 杀死/停止本机应用程序?

【问题讨论】:

标签: android adb


【解决方案1】:

请在 adb shell 中尝试以下命令。

adb shell kill <PID>

【讨论】:

  • @user774217,这不能在 android 的 shell 中运行。看到它以adb shell 开头了吗?在 Ubuntu 中尝试一下。
  • 朱利安·冯德伦是对的。请在您的 ubantu 终端中尝试一下。
  • 这会终止进程,但不能保证应用程序已关闭并消失。例如,在 Skype 上尝试此操作会使应用立即重新启动(登录到 Skype 后尝试)。
【解决方案2】:

Chirag 删除了它,所以又来了:

adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill

这是在模拟器之外运行的。它是一个长的 Unix 命令,而不是具有视觉分隔的四个命令。 | 是语法,由您的(Ubuntu 的)shell 解释,然后将 adb、grep 等的输出通过管道传输到下一个。模拟器中只执行ps

【讨论】:

  • adb shell ps | grep $1 | awk '{print $2}' 部分非常适合仅提取命名应用程序的 PID(本例中为 1 美元)。
  • 如果因为需要root权限而无法终止服务,修改最后一部分以反映xargs adb shell 'su -c kill'。此外,stackoverflow.com/a/9418553/198348 是相关的。
  • “不允许操作”
【解决方案3】:
adb shell am force-stop packagename

【讨论】:

  • @SteveRichey 为什么这在 Unix 上不起作用?我刚刚在 Ubuntu 14.04 上试用过,效果很好。
  • @ChrisFoster 我只是说,与最佳答案(在 Windows 中不起作用)相反,它适用于 Windows 用户。
  • 由于杀死前台进程需要root访问权限,这可能只是下一个最佳选择!
【解决方案4】:

杀死您的应用的另一种方法是将您的应用发送到后台(使用主页按钮)并调用:

adb shell am kill com.your.package

它并非在我的所有设备上都有效,但是,在它工作的设备上,它的行为方式与应用程序由于缺乏资源而在后台被终止的方式相同,并且这种状态通常可以方便地测试进程的不同方面娱乐。

例如,如果您在 Manifest 中注册了广播接收器,它们仍将启动而无需手动重新启动您的应用程序,而您可以使用以下方式强制停止:

adb shell am force-stop com.your.package

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 2018-12-04
    • 1970-01-01
    相关资源
    最近更新 更多