【问题标题】:How to start a process on Android device using adb如何使用 adb 在 Android 设备上启动进程
【发布时间】:2013-02-21 09:47:19
【问题描述】:

我正在使用 adb 命令来管理安卓手机上的进程。

我可以通过命令杀死特定进程

adb kill "PID"  (PID is the process ID)

然后进程被杀死。

但是当我使用命令启动它时

adb start "PID"

它不会启动进程。

我希望启动的进程位于 /system/bin 文件夹中,我不知道该进程的包或活动名称是什么。我只知道进程的“PID”和“用户”。

是否有任何命令可以在 android 设备上启动特定进程?

【问题讨论】:

  • 这是原生应用还是 dalvik 应用?你能给出真实的名字吗?
  • 此应用位于 /system/bin 文件夹中,这是一个原生应用。

标签: android adb


【解决方案1】:

杀死PID对应的进程后,如何重新启动它?

您可以尝试通过这种方式从adb 启动应用程序:-

adb shell
am start -n com.package.name/com.package.name.ActivityName

或者你可以直接使用这个:

adb shell am start -n com.package.name/com.package.name.ActivityName

【讨论】:

  • 我要启动的进程在 /system/bin 文件夹中,我不知道它的包名。我只知道该进程的 PID 和用户
  • 您可以使用PIDthis的方式获取正在运行的应用信息。之后,您可以按照我上面的建议进行操作。
【解决方案2】:

原生应用没有活动。它们就是这样 - 原生二进制文件。

如果您只知道进程的数字 ID - 那么ps <PID> 命令将在NAME 列中显示进程二进制文件的名称。像这样:

# ps 407
USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
root      407   1     4540   272   ffffffff 000160a4 S /sbin/adbd

如果PPID 的值为1 - 这意味着它已由系统init 启动,并且该应用很可能是“服务”应用。要控制它,您需要找到服务的名称,然后使用 stop <service>start <service>

要查找服务名称运行grep ^service /init*rc | grep <binary name>,服务名称将在第二列(即“adbd”):

# grep ^service /init*rc | grep /sbin/adbd
/init.rc:service adbd /sbin/adbd

所以要正确控制这个应用程序 - 你应该使用 stop adbdstart adbd

【讨论】:

    【解决方案3】:

    您说您知道您的二进制文件在 /system/bin 中,所以我假设您也知道该二进制文件的名称。 如果您不这样做,该命令将帮助您找出答案:

    ps PID
    

    要启动二进制文件(例如正常运行时间),您只需在 shell 中输入其名称:

    adb shell
    uptime
    

    或在一个命令中

    adb shell uptime
    

    但如果您的二进制文件不在 $PATH 中列出的目录之一中,您必须输入它的完整路径

    adb shell /system/bin/uptime
    

    您可以使用以下命令检查 $PATH:

    adb shell echo $PATH
    

    【讨论】:

      猜你喜欢
      • 2022-07-15
      • 2021-10-16
      • 2020-02-10
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      相关资源
      最近更新 更多