使用adb命令停止APP后台进程的方法


http://ghoulich.xninja.org/2015/12/10/stop-app-background-by-adb/



0. 环境描述

① 宿主机系统:Ubuntu 14.04 Desktop
② 客户机系统:Android-x86 4.4 R2
③ SDK版本:android-sdk_r24.2-linux
④ 虚拟化方案:KVM QEMU
⑤ 联网方式:NAT
⑥ 宿主机IP:192.168.1.109
⑦ 客户机IP:192.168.122.131
⑧ 示例APP:搜狐视频

1. 启动客户机

① 通过VNC连接至宿主机;
② 在宿主机中找到并运行:
Applications → System Tools → Virtual Machine Manager
③ 在KVM的图形界面中运行先前创建好的Android-x86虚拟机。

2. ADB连接至客户机

在宿主机的shell中运行以下命令:

  
  1. adb connect 192.168.122.131:5555

若上述命令的输出如下所示,则表示连接成功:

3. 检查搜狐视频是否在运行

在宿主机的shell中运行以下命令:

  
  1. adb shell ps | grep sohu

若上述命令的输出如下所示,则表明当前没有运行搜狐视频:

4. 运行搜狐视频APP

① 查找运行入口

使用APKTool工具反编译搜狐视频的APK安装文件(SohuVideo_Android_Phone.apk),得到如下文件列表:

其中的AndroidManifest.xml文件包含APP的启动信息,几乎每个APP的APK文件反编译之后都具有这个文件。

使用Notepad++打开AndroidManifest.xml文件,查找关键字“android.intent.category.LAUNCHER”或“android.intent.action.MAIN”,此时可以找到APP的入口动作:

其中的“.FirstNavigationActivityGroup”便是便是搜狐视频的入口动作,下面通过adb启动APP时需要用到。

② 在宿主机的shell中运行以下命令:

  
  1. adb shell am start -a android.intent.action.MAIN -n com.sohu.sohuvideo/.FirstNavigationActivityGroup

若上述命令的输出如下所示,则表明运行搜狐视频成功:

此时观察客户机,可以发现搜狐视频已经成功运行:

5. 关闭搜狐视频APP

① 找到搜狐视频的系统进程

在宿主机的shell中运行以下命令:

  
  1. adb shell ps | grep sohu

若上述命令的输出如下所示,则表示找到搜狐视频的进程:

搜狐视频的进程名为“com.sohu.sohuvideo”。

② 此处有两种方法关闭搜狐视频的进程,如下所示:

  • Method-A:

在宿主机的shell中运行以下命令:

  
  1. adb shell am force-stop com.sohu.sohuvideo

若上述命令的输出如下所示,则表示成功杀死进程:

注意:
这种方法会强制停止APP进程,不会清除APP进程在系统中产生的数据。

  • Method-B:

在宿主机的shell中运行以下命令:

  
  1. adb shell pm clear com.sohu.sohuvideo

若上述命令的输出如下所示,则表示成功杀死进程:

注意:
这种方法不仅会停止APP进程,而且会清除这个APP进程产生的所有数据。

③ 检查搜狐视频是否正在运行

在宿主机的shell中运行以下命令:

  
  1. adb shell ps | grep sohu

若上述命令的输入如下所示,则表示已经成功停止搜狐视频的后台进程:


<think>嗯,用户想了解在安卓5.1.1系统上使用ADB命令启动APP的具体方法。首先,我需要回忆一下ADB启动应用的基本命令结构。通常,启动应用需要知道应用的包名和活动名。然后,用户可能还需要知道如何查找这些信息,比如使用adbshell pmlist packages来列出所有包名,或者用adbshell dumpsysactivity来查看当前活动。接下来,我得确认安卓5.1.1是否有特殊的注意事项。一般来说,ADB命令在不同版本之间变化不大,但可能有细微差别。比如,某些参数可能在旧版本中不可用,或者权限设置不同。需要提醒用户注意权限问题,比如是否已经开启了USB调试,这在安卓5.1.1中是必须的。然后,用户可能需要具体的示例。比如,启动浏览器的命令,或者启动设置应用的命令。这时候需要给出具体的包名和活动名,比如com.android.browser/.BrowserActivity。不过要注意,不同设备可能包名不同,比如有些设备用com.android.chrome,所以最好建议用户先查找正确的包名和活动名。另外,用户可能不知道如何获取活动名,这时候可以介绍adbshelldumpsys activity|findstr "mResumedActivity"或者类似的命令,但需要根据操作系统调整,比如在Linux中用grep而不是findstr。同时,可能需要提醒用户,如果应用没有暴露的Activity,可能无法直接启动。还有,用户可能想了解如何验证是否启动成功,可以建议查看日志或者使用adb shellamstart -W来测量启动时间。此外,可能还需要提到后台启动和带参数启动的情况,比如使用--es传递额外数据。最后,要确保回答的结构清晰,分步骤说明,并给出常见问题的解决方案,比如权限不足、多设备连接时的-s参数使用,以及包名错误的情况。同时,生成的相关问题要覆盖用户可能进一步的需求,比如关闭应用、安装应用或调试技巧。</think>### 安卓5.1.1 ADB命令启动应用程序教程 在Android 5.1.1系统中,使用ADB命令启动应用程序的核心步骤如下: #### 1. **获取应用包名和主活动名** - **包名**:应用的唯一标识符,例如浏览器为$com.android.browser$ - **主活动名**:应用入口的Activity类名,例如浏览器主界面为$BrowserActivity$ - **查找方法**: ```bash adb shell pm list packages # 列出所有已安装应用的包名 adb shell dumpsys activity | findstr "mResumedActivity" # 获取当前前台应用的活动名(Windows) ``` 若需精确匹配,可结合`grep`命令过滤(Linux/macOS)[^3]。 #### 2. **启动应用的命令格式** ```bash adb shell am start -n <包名>/<主活动名> ``` - **示例**:启动系统浏览器 ```bash adb shell am start -n com.android.browser/.BrowserActivity ``` - **注意**:若设备存在多个实例,需通过`-s <设备序列号>`指定目标设备[^2]。 #### 3. **验证启动结果** - 观察设备屏幕是否跳转到目标应用界面 - 通过日志验证: ```bash adb logcat | findstr "ActivityManager" ``` #### 4. **常见问题及解决方案** | 问题类型 | 解决方法 | |------------------------|--------------------------------------------------------------------------| | **权限不足** | 检查设备是否已开启USB调试模式(开发者选项)[^1] | | **多设备连接冲突** | 使用`adb -s <设备序列号> shell`指定目标设备[^2] | | **包名或活动名错误** | 通过`adb shell dumpsys package <包名>`查看完整Activity列表 | #### 5. **扩展功能** - **带参数启动**: ```bash adb shell am start -n <包名>/<活动名> --es "key" "value" ``` - **后台启动**: ```bash adb shell am start -W --background -n <包名>/<活动名> ``` $$ \text{启动命令的通用格式:} \quad \text{am start} \quad [\text{选项}] \quad -n \quad \frac{\text{包名}}{\text{活动名}} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值