如何使用ADB命令检测正在运行的应用程序

我有一个运行Jelly Bean OS的Android设备。

有没有什么办法来检测进程运行或不使用ADB命令,如果我知道包名

  • 是否有相当于iOS的'adb shell输入键盘文字'?
  • Android:如何知道Android设备中是否已经使用adb安装了任何应用程序?
  • 运行shell命令,虽然Android上的Java代码?
  • 以编程方式执行adb命令时出错
  • 如何从shell中识别Android设备的分区?
  • 获取通过adb连接的设备的android操作系统版本
  • 如何阅读与Java的Android属性
  • 如何从/ system / app卸载自己的应用程序?
  • 不需要使用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值过滤选项已从 Android 7.0中的ps中删除 。 要在Android 7.0中按名称检查正在运行的进程,可以使用pidof命令:

     adb shell pidof com.android.phone 

    如果find了这个进程,它将返回PID,否则返回一个空string。

    您可以使用

     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 appssearch任何包含“apps”的行,如上所示,它们都是com.google.android.APPS。 或GAPPS,awk提取第9列,在这种情况下是包名。

    search特定的包使用

     adb shell ps | grep PACKAGE.NAME.HERE | awk '{print $9}' 

    adb shell ps | grep com.we7.player | awk '{print $9}' adb shell ps | grep com.we7.player | awk '{print $9}'

    如果正在运行,则会出现名称,如果没有,则不会返回结果。

    或者,您可以使用pgrep或Process Grep。 (需要Busybox)

    你可以做一个adb shell pgrep com.example.app ,它只显示进程ID。

    作为一个build议,由于Android是Linux,你可以使用大多数基本的Linux命令与adb shell来导航/控制。 :d

    如果您想要直接获取当前应用程序的包名称,请使用此adb命令 –

     adb shell dumpsys window windows | grep -E 'mFocusedApp'| cut -d / -f 1 | cut -d " " -f 7 

    来自adb命令结果的额外信息使用cut命令被删除。 从这里解决原始问题。

    我只是注意到, 顶部是可用的adb ,所以你可以做的事情

      adb shell top -m5 

    监控前五名的CPU占用过程。

    要么

      adb shell top -m5 -s cpu -n 20|tee top.log 

    logging一分钟,并将输出收集到计算机上的文件中。

    尝试:

     adb shell pidof <myPackageName> 

    如果应用程序未运行,则标准输出将为空。 否则,它将输出PID。