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中運行以下命令:
adb connect 192.168.122.131:5555
3. 檢查搜狐視頻是否在運行
在宿主機的shell中運行以下命令:
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中運行以下命令:
adb shell am start -a android.intent.action.MAIN -n com.sohu.sohuvideo/.FirstNavigationActivityGroup
5. 關閉搜狐視頻APP
① 找到搜狐視頻的系統進程
在宿主機的shell中運行以下命令:
adb shell ps | grep sohu
搜狐視頻的進程名為“com.sohu.sohuvideo
”。
② 此處有兩種方法關閉搜狐視頻的進程,如下所示:
- Method-A:
在宿主機的shell中運行以下命令:
adb shell am force-stop com.sohu.sohuvideo
注意:
這種方法會強制停止APP進程,不會清除APP進程在系統中產生的數據。
- Method-B:
在宿主機的shell中運行以下命令:
adb shell pm clear com.sohu.sohuvideo
注意:
這種方法不僅會停止APP進程,而且會清除這個APP進程產生的所有數據。
③ 檢查搜狐視頻是否正在運行
在宿主機的shell中運行以下命令:
adb shell ps | grep sohu