adb 基本操作 “坐下坐下”
-
adb devices
// 查看设备 -
adb -s serialNumber shell
// 进入指定设备 -
adb logcat
// 查看日志-
logcat | grep <str>
//显示包含<str>的 logcat</str> -
logcat | grep -i <str>
//显示包含<str>,并忽略大小写的 logcat</str> -
logcat | grep pid
//显示pid进程的日志
-
-
adb get-state
// 连接状态 -
adb start-server
// 启动 ADB 服务 -
adb kill-server
// 停止 ADB 服务 -
adb push local remote
// 电脑推送到手机 -
adb pull remote local
// 手机拉取到电脑
Am
命令 | 功能 | 实现方法 |
---|---|---|
am start [options ] <INTENT > |
启动 Activity | startActivityAsUser |
am startservice <INTENT > |
启动 Service | startService |
am stopservice <INTENT > |
停止 Service | stopService |
am broadcast <INTENT > |
发送广播 | broadcastIntent |
am kill <PACKAGE > |
杀指定后台进程 | killBackgroundProcesses |
am kill-all | 杀所有后台进程 | killAllBackgroundProcesses |
am force-stop <PACKAGE > |
强杀进程 | forceStopPackage |
am hang | 系统卡住(慎用!!!) | hang |
am restart | 重启 | restart |
am bug-report | 创建 bugreport | requestBugReport |
am dumpheap <pid > <file > |
进程 pid 的堆信息输出到 file | dumpheap |
am send-trim-memory <pid > <level > |
收紧进程的内存 | setProcessMemoryTrimLevel |
am monitor | 监控 | MyActivityController.run |
Example
adb shell am start -a android.intent.action.CALL -d tel:10086
//打电话给10086
adb shell am start -a android.intent.action.VIEW -d https://www.baidu.com
打开百度
主要是启动 Activity 命令am start [options] <INTENT>
使用 options 参数,接下来列举 Activity 命令的 [options] 参数:
<OPTIONS>
- -D: 允许调试功能
- -W: 等待 app 启动完成
- -R
<COUNT
>: 重复启动 Activity COUNT 次 - -S: 启动 activity 之前,先调用 forceStopPackage() 方法强制停止 app.
- –opengl-trace: 运行获取 OpenGL 函数的 trace
- –user
<USER_ID
>|
current: 指定用户来运行 App, 默认为当前用户。 - –start-profiler
<FILE
>: 启动 profiler,并将结果发送到<FILE
>; - -P
<FILE
>: 类似 –start-profiler,不同的是当 app 进入 idle 状态,则停止 profiling - –sampling INTERVAL: 设置 profiler 取样时间间隔,单位 ms;
<INTENT>
-
-a <ACTION>
: 指定 Intent action, 实现原理 Intent.setAction(); -
-n <COMPONENT>
: 指定组件名,格式为 {包名}/.{主 Activity 名},实现原理 Intent.setComponent(); -
-d <DATA_URI>
: 指定 Intent data URI -
-t <MIME_TYPE>
: 指定 Intent MIME Type -
-c <CATEGORY> [-c <CATEGORY>] ...]
: 指定 Intent category,实现原理 Intent.addCategory() -
-p <PACKAGE>
: 指定包名,实现原理 Intent.setPackage(); -
-f <FLAGS>
: 添加 flags,实现原理 Intent.setFlags(int),紧接着的参数必须是 int 型;
Pm
命令 | 功能 | 实现方法 |
---|---|---|
list packages | 列举 app 包信息 | PMS.getInstalledPackages |
install [options ] <PATH > |
安装应用 | PMS.installPackageAsUser |
uninstall [options ]<package > |
卸载应用 | IPackageInstaller.uninstall |
enable <包名或组件名 > |
enable | PMS.setEnabledSetting |
disable <包名或组件名 > |
disable | PMS.setEnabledSetting |
hide <package > |
隐藏应用 | PMS.setApplicationHiddenSettingAsUser |
unhide <package > |
显示应用 | PMS.setApplicationHiddenSettingAsUser |
get-install-location | 获取安装位置 | PMS.getInstallLocation |
set-install-location | 设置安装位置 | PMS.setInstallLocation |
path <package > |
查看 App 路径 | PMS.getPackageInfo |
clear <package > |
清空 App 数据 | AMS.clearApplicationUserData |
get-max-users | 最大用户数 | UserManager.getMaxSupportedUsers |
force-dex-opt <package > |
dex 优化 | PMS.forceDexOpt |
dump <package > |
dump 信息 | AM.dumpPackageStateStatic |
trim-caches <目标size > |
紧缩 cache 目标大小 | PMS.freeStorageAndNotify |
安装应用
pm install [options] <PATH>
<options>
- -r: 覆盖安装已存在 Apk,并保持原有数据;
- -d: 运行安装低版本 Apk;
- -t: 运行安装测试 Apk
- -i : 指定 Apk 的安装器;
- -s: 安装 apk 到共享快存储,比如 sdcard;
- -g: 准许 Apk manifest 中的所有权限;
<PATH>
该参数是必须的,是指需要安装的 apk 所在的路径。
查看包名
list packages [options] <FILTER>
<options>
- -f: 显示包名所关联的文件;
- -d: 只显示 disabled 包名;
- -e: 只显示 enabled 包名;
- -s: 只显示系统包名;
- -3: 只显示第 3 方应用的包名;
- -i: 包名所相应的 installer;
- -u: 包含 uninstalled 包名.
<FILTER> :sangfor
adb shell pm list packages sangfor
image.png
ps 进程命令
-
adb shell ps
//查看当前的所有进程
image.png
FIELD | Description |
---|---|
USER | 进程持有者名称 |
PID | 进程 ID |
PPID | 父进程 ID |
VSZ | 进程在虚拟内存所占的空间大小 (KB) |
RSS | 进程实际所使用的物理内存大小(KB) |
WCHAN | Waiting Channel, 进程等待正在等待的某个事件,如果为空,则表示进程处于运行状态 |
NAME | 进程名 |
-
adb shell ps -T |grep pid
//查看pid进程下的所有线程
网友评论