完整教程:ADB Shell 命令

365网站是正规平台吗 📅 2025-10-31 20:04:18 👤 admin 👁️ 2699 👑 740
完整教程:ADB Shell 命令

AI 汇总,用于速查。

一、活动管理器adb shell am(Activity Manager)命令用于在 Android 设备上管理 Activity、Service、Broadcast 等组件。其参数可划分为以下功能模块:

1. 组件启动与操作启动 Activitystart [options]

示例:adb shell am start -n com.example/.MainActivity启动 Servicestartservice [options]

示例:adb shell am startservice -n com.example/.MyService绑定 Servicebindservice [options]

示例:adb shell am bindservice -n com.example/.MyService停止 Servicestopservice [options]

示例:adb shell am stopservice -n com.example/.MyService发送广播broadcast [options]

示例:adb shell am broadcast -a android.intent.action.BOOT_COMPLETED2. 进程与应用管理强制停止应用force-stop

示例:adb shell am force-stop com.example.app终止进程kill [options]

示例:adb shell am kill com.example.app清除应用数据clear-app-data

示例:adb shell am clear-app-data com.example.app3. 调试与性能分析启动性能分析profile start

示例:adb shell am profile com.example.app start /sdcard/profile.trace停止性能分析profile stop

示例:adb shell am profile com.example.app stop设置调试应用set-debug-app [options]

示例:adb shell am set-debug-app -w com.example.app清除调试应用设置clear-debug-app4. Instrumentation 测试运行测试用例instrument [options]

示例:adb shell am instrument -w com.example.test/androidx.test.runner.AndroidJUnitRunner

5. 用户与多任务管理切换用户switch-user

示例:adb shell am switch-user 1启动用户start-user

示例:adb shell am start-user 1停止用户stop-user [options]

示例:adb shell am stop-user -f 1任务栈操作stack move-task

示例:adb shell am stack move-task 1 26. 设备显示设置修改显示尺寸display-size x

示例:adb shell am display-size 800x600修改显示密度display-density

示例:adb shell am display-density 2407. 其他工具监控模式monitor

示例:adb shell am monitor(监控 Activity/Service 生命周期)模拟系统挂起(测试用)hang

示例:adb shell am hang重启设备restart

示例:adb shell am restart常用 Intent 参数选项在启动组件时,可通过以下选项构建 Intent:

-a :指定 Action(如 android.intent.action.VIEW)。-n :指定组件名(包名/类名)。-d :设置数据 URI(如 https://example.com)。-t :设置 MIME 类型(如 image/png)。-f :添加 Intent Flags(如 0x10000000)。--es :添加字符串 Extra。二、包管理器adb shell pm(Package Manager)命令用于管理 Android 设备上的应用包(APK)。其参数可划分为以下功能模块:

1. 包查询与列表列出所有包list packages [options] [filter]

示例:adb shell pm list packages -f # 显示包关联的APK路径

adb shell pm list packages -s # 只显示系统应用

查看包安装路径path

示例:adb shell pm path com.android.chrome查看包详细信息dump

示例:adb shell pm dump com.android.chrome2. 包安装与卸载安装APKinstall [options]

示例:adb shell pm install /sdcard/app.apk

adb shell pm install -t -g app.apk # 允许测试并授予所有权限

卸载应用uninstall [options]

示例:adb shell pm uninstall com.example.app

adb shell pm uninstall -k com.example.app # 卸载但保留数据

3. 权限管理授予权限grant

示例:adb shell pm grant com.example.app android.permission.CAMERA

撤销权限revoke

示例:adb shell pm revoke com.example.app android.permission.ACCESS_FINE_LOCATION

重置权限reset-permissions

示例:adb shell pm reset-permissions4. 包状态控制启用/禁用组件enable disable disable-user (仅对当前用户禁用)

示例:adb shell pm disable com.example.app/.MainActivity

挂起/恢复应用(Android 9+)suspend unsuspend

示例:adb shell pm suspend com.example.app5. 用户管理创建用户create-user

示例:adb shell pm create-user test_user删除用户remove-user

示例:adb shell pm remove-user 10列出用户list users

示例:adb shell pm list users6. 存储与数据管理清除应用数据clear

示例:adb shell pm clear com.example.app设置安装位置set-install-location <0|1|2>

(0=自动,1=内部存储,2=外部存储)

示例:adb shell pm set-install-location 0获取安装位置get-install-location7. 编译与优化编译应用(ART优化)compile [options]

示例:adb shell pm compile -m speed com.example.app # 速度优化

强制编译所有应用force-dex-opt

示例:adb shell pm force-dex-opt8. 验证与安全验证安装包verify [options]

示例:adb shell pm verify -r /sdcard/app.apk设置应用链接行为set-app-links [options]

示例:adb shell pm set-app-links --package com.example.app 1(允许打开链接)9. 其他工具修复权限reset-permissions(重置运行时权限)重置偏好设置reset-preferred-apps

示例:adb shell pm reset-preferred-apps 0三、设备信息getprop 和 setprop 是 Android 系统属性管理命令,用于读取/修改系统级配置参数。以下是详细的功能模块划分和参数说明:

1. 命令基础功能命令功能描述语法格式getprop读取系统属性值getprop [属性名]setprop设置系统属性值setprop <属性名> <属性值>2. 系统属性类型(按前缀分类)a) 只读属性 (ro.*)前缀:ro. (read-only)特点:系统初始化后不可修改常见属性:ro.build.version.release # Android 版本号

ro.product.model # 设备型号 (e.g., "Pixel 6")

ro.serialno # 设备序列号

b) 持久化属性 (persist.*)前缀:persist.特点:重启后值保持不变(存储在 /data/property)常见属性:persist.sys.timezone # 系统时区 (e.g., "Asia/Shanghai")

persist.sys.language # 系统语言

c) 控制属性 (ctl.*)前缀:ctl.特点:用于启停系统服务关键操作:setprop ctl.start

# 启动服务 (e.g., "zygote")

setprop ctl.stop

# 停止服务

d) 调试属性 (debug.*, log.*)前缀:debug. / log.作用:控制调试行为示例:setprop log.tag.GPS VERBOSE # 开启GPS模块详细日志

setprop debug.choreographer.skipwarning 1 # 禁用UI渲染警告

e) 网络属性 (net.*, dhcp.*)前缀:net. / dhcp.作用:管理网络配置示例:getprop net.dns1 # 主DNS服务器IP

setprop net.eth0.dns1 8.8.8.8 # 设置以太网DNS

3. 核心参数详解getprop 参数参数/用法说明getprop列出 所有 系统属性getprop <属性名>读取指定属性值getprop -T显示属性类型 (Android 8.0+)getprop -Z显示安全上下文 (SELinux)setprop 参数参数/用法说明setprop <属性名> <值>修改/创建属性特殊值注意空格需用引号包裹setprop test.key "value with spaces"多单词值需引号setprop boot_completed "done"4. 关键属性示例表属性名作用读写性ro.build.fingerprint设备指纹信息只读persist.sys.adb.tcp.portADB网络调试端口持久化sys.boot_completed系统启动完成标志 (1=完成)可写debug.egl.trace启用OpenGL渲染跟踪可写service.adb.root控制ADB Root权限 (1=开启)可写5. 操作示例▶ 读取设备信息

adb shell getprop ro.product.model # 输出: "Pixel 7 Pro"

adb shell getprop ro.build.version.sdk # 输出: "34" (Android 14)

▶ 修改时区(需重启)

adb shell setprop persist.sys.timezone Europe/Paris

▶ 控制服务启停

# 重启网络服务

adb shell setprop ctl.stop netd

adb shell setprop ctl.start netd

▶ 开启全局调试日志

adb shell setprop log.tag.* VERBOSE

▶ 检查系统启动状态

adb shell getprop sys.boot_completed # 输出"1"表示启动完成

6. 注意事项权限要求:

修改 ro.* 属性需要 Root 权限(需先 adb root)persist.* 修改后需重启生效属性存储位置:

临时属性:/dev/__properties__持久属性:/data/property/*危险操作:

错误修改核心属性(如 ro. 前缀)可能导致 系统无法启动

属性删除:

无直接删除命令,可通过设置空值覆盖:

setprop my.temp.property ""

7. 调试技巧监视属性变化:adb shell watch -n 1 getprop | grep <属性名>

查看属性列表:adb shell getprop | grep -E "ro.|persist." # 过滤关键属性

重置所有持久属性:

删除 /data/property/* 文件(需 Root)四、转储系统信息dumpsys 是 Android 系统诊断工具,用于获取系统服务的详细状态信息。其功能模块按系统服务分类,以下是主要模块及其参数的详细解析:

1. 基础系统服务服务名命令参数功能描述activitydumpsys activity [options]显示 Activity/任务栈信息windowdumpsys window [options]窗口管理器状态packagedumpsys package [options]包管理信息meminfodumpsys meminfo [package]内存使用详情2. 硬件与传感器服务名命令参数功能描述batterydumpsys battery电池状态与统计sensorservicedumpsys sensorservice传感器服务状态displaydumpsys display显示配置参数3. 网络与连接服务名命令参数功能描述netstatsdumpsys netstats网络流量统计connectivitydumpsys connectivity网络连接状态wifidumpsys wifiWi-Fi 服务详情4. 存储与多媒体服务名命令参数功能描述diskstatsdumpsys diskstats磁盘使用统计media.cameradumpsys media.camera相机服务状态media.audiodumpsys media.audio音频服务信息5. 进程与性能服务名命令参数功能描述procstatsdumpsys procstats [hours]进程运行统计gfxinfodumpsys gfxinfo [package]图形渲染性能cpuinfodumpsys cpuinfoCPU 使用情况核心参数详解通用参数参数作用示例-l列出所有可用服务dumpsys -l--help显示帮助信息dumpsys --help-t [timeout]设置超时时间(秒)dumpsys -t 30 activity--proto输出 Protocol Buffer 格式dumpsys window --proto模块专用参数Activity 服务 (activity)

dumpsys activity [options] [COMPONENT]

a:显示所有 Activity 信息b:显示后台 Activitys:显示栈信息p [package]:过滤指定包名示例:dumpsys activity p com.android.chrome内存信息 (meminfo)

dumpsys meminfo [options] [package|pid]

-a:显示所有进程-d:显示 Dalvik 内存-s:按重要性排序示例:dumpsys meminfo -s com.android.browser图形渲染 (gfxinfo)

dumpsys gfxinfo [package] [framestats]

framestats:输出帧性能数据reset:重置统计计数器示例:dumpsys gfxinfo com.android.chrome framestats电池统计 (battery)

dumpsys battery [options]

set [ac|usb|wireless|status] [value]:模拟电池状态reset:重置电池统计示例:dumpsys battery set level 50五、monkey测试monkey 是 Android 平台的压力测试工具,用于模拟用户随机操作事件。以下是完整的命令参数详解,按功能分类说明:

1、基础命令格式

adb shell monkey [options]

:必需参数,指定要发送的随机事件数量(必须放在命令最后)2、事件类型控制参数控制不同类型事件的生成比例(默认比例见括号):

参数说明示例--pct-touch 触摸事件比例(点击屏幕,默认15%)--pct-touch 30--pct-motion 动作事件比例(滑动/拖动,默认10%)--pct-motion 20--pct-trackball 轨迹球事件比例(默认0%)--pct-trackball 5--pct-nav 基本导航事件比例(方向键,默认5%)--pct-nav 10--pct-majornav 主要导航事件比例(返回/菜单键,默认10%)--pct-majornav 15--pct-syskeys 系统按键比例(Home/音量键,默认5%)--pct-syskeys 3--pct-appswitch 应用切换比例(启动Activity,默认15%)--pct-appswitch 25--pct-anyevent 其他事件比例(默认0%)--pct-anyevent 2--pct-pinchzoom 双指缩放事件比例(Android 4.1+,默认0%)--pct-pinchzoom 103、测试对象约束参数参数说明示例-p 只测试指定包(可多次使用)-p com.android.browser--ignore-package 排除指定包--ignore-package com.xxx--ignore-crashes忽略崩溃继续测试--ignore-timeouts忽略ANR继续测试--ignore-security-exceptions忽略权限错误继续测试-c 只测试指定Intent类别的Activity-c android.intent.category.LAUNCHER4、调试与日志参数参数说明示例-v日志级别(每多一个-v增加详细度)-v -v -v--dbg-no-events初始化但不发送事件--setup scriptfile运行前执行脚本--setup /sdcard/init.mks-f 运行指定脚本(可多次使用)-f /sdcard/test1.mks--port 设置控制端口--port 1080--wait-dbg等待调试器连接5、事件流控制参数参数说明示例-s 设置随机种子(用于重现测试)-s 12345--throttle 事件间延迟(毫秒)--throttle 300--randomize-throttle随机化事件间隔--monitor-native-crashes监控Native崩溃--kill-process-after-error出错时杀死进程--hprof事件前后生成性能分析文件6、高级配置参数参数说明示例--pct-rotation 屏幕旋转事件比例--pct-rotation 5--pct-permission 权限事件比例--pct-permission 3--pkg-blacklist-file 包黑名单文件--pkg-blacklist-file /sdcard/blacklist.txt--pkg-whitelist-file 包白名单文件--pkg-whitelist-file /sdcard/whitelist.txt--bugreport崩溃时自动生成bugreport7、完整命令示例1. 基础稳定性测试

adb shell monkey -p com.example.app \

--throttle 300 \

--ignore-crashes \

--ignore-timeouts \

-v -v 10000

2. 精准复现测试场景

adb shell monkey -p com.android.chrome \

-s 20240501 \ # 固定随机种子

--pct-touch 40 \

--pct-appswitch 30 \

--throttle 500 \

-v -v -v 5000

3. 带黑名单的多应用测试

adb shell monkey \

--pkg-blacklist-file /sdcard/blacklist.txt \

--ignore-security-exceptions \

--monitor-native-crashes \

-v 20000

4. 脚本化测试

adb shell monkey \

-f /sdcard/gestures.mks \ # 手势脚本

-f /sdcard/login.mks \ # 登录脚本

--throttle 1000 \

-v 1000

8、Monkey 脚本语法Monkey 脚本(.mks 文件)支持精确控制事件:

# 基本命令

type= raw events

count= 10

speed= 1.0

# 触摸事件

DispatchPointer(0,0,0,500,800,0,0,0,0,0,0,0)

DispatchPointer(0,0,1,500,800,0,0,0,0,0,0,0)

# 按键事件

DispatchKey(0,0,0,KEYCODE_HOME,0,0,0,0)

# 启动Activity

LaunchActivity(com.example,com.example.MainActivity)

# 等待

UserWait(2000)

9、调试技巧事件流重现

使用 -s 参数固定随机种子重现问题场景:

adb shell monkey -s 12345 -v 1000

实时监控

结合 logcat 过滤 Monkey 事件:

adb logcat -s "Monkey"

性能分析

使用 --hprof 生成内存快照:

adb shell monkey --hprof -p com.example.app 500

网络控制

通过端口远程控制 Monkey:

adb shell monkey --port 1080 1000

telnet localhost 1080 # 输入命令如:tap 100 200

六、自动化开发相关1. 输入命令 (input)用于模拟各种输入事件(按键、触摸、文本输入等)

主要参数:参数说明示例text输入文本input text "Hello@123"keyevent发送按键事件input keyevent KEYCODE_HOMEtap 点击屏幕坐标input tap 500 1200swipe [duration]滑动操作input swipe 300 800 300 300 500draganddrop 拖拽操作input draganddrop 100 100 500 500press模拟轨迹球按下input pressroll 模拟轨迹球滚动input roll 0 10高级用法:

# 长按操作(通过延长swipe时间)

input swipe 500 500 500 500 2000

# 组合按键(返回+菜单)

input keyevent KEYCODE_BACK && input keyevent KEYCODE_MENU

# 输入特殊字符

input text "邮箱地址\%40domain.com" # @符号需转义

2. 屏幕截图与录制(1) screencap 截图命令参数说明示例-p保存为PNG格式(默认)screencap -p /sdcard/screen.png-d指定显示器(多屏设备)screencap -d 1 /sdcard/screen2.png–auto-rotate根据设备方向自动旋转Android 12+–crop截取指定区域screencap --crop 100,200,600,800 /sdcard/crop.png(2) screenrecord 录屏命令参数说明示例–size设置分辨率screenrecord --size 1280x720 /sdcard/demo.mp4–bit-rate设置比特率(默认4Mbps)screenrecord --bit-rate 6000000 demo.mp4–time-limit

命令结构:

settings [--user

]

[value]

命名空间:命名空间说明system系统设置(铃声、亮度等)secure安全设置(位置、输入法等)global全局设置(ADB、调试选项)主要命令:命令说明示例get获取设置值settings get system screen_brightnessput 修改设置值settings put system screen_brightness 150delete删除设置settings delete secure bluetooth_addresslist列出所有设置项settings list global常用键值示例:

# 启用USB调试

settings put global adb_enabled 1

# 设置默认输入法

settings put secure default_input_method com.google.android.inputmethod.latin/.LatinIME

# 修改屏幕超时

settings put system screen_off_timeout 600000 # 10分钟

4. 窗口管理器 (wm)管理显示设置和窗口属性

主要命令:命令参数说明示例size[reset|WxH]获取/设置分辨率wm size 1080x1920density[reset|DENSITY]获取/设置DPIwm density 420overscanreset|LEFT,TOP,RIGHT,BOTTOM设置过扫描区域wm overscan 0,0,-100,0scalingoff|auto显示缩放模式wm scaling autodismiss-keyguard解锁屏幕wm dismiss-keyguardmultiwindowenable|disable启用/禁用分屏wm multiwindow enable高级用法:

# 临时修改为720P分辨率

wm size 720x1280

# 恢复默认分辨率

wm size reset

# 右侧扩大显示区域100像素(游戏全屏常用)

wm overscan 0,0,-100,0

5. 输入法管理器 (ime)管理输入法设置和状态

主要命令:命令参数说明示例list[-a|-s]列出输入法ime list -sset设置默认输入法ime set com.ime/.Keyboardenable启用输入法ime enable com.ime/.Keyboarddisable禁用输入法ime disable com.ime/.Keyboardreset重置输入法选择使用流程:获取输入法ID:

adb shell ime list -a

# 示例输出:com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME

设置默认输入法:

ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME

切换输入法:

# 禁用当前输入法

ime disable com.current.ime/.Keyboard

# 启用新输入法

ime enable com.new.ime/.Keyboard

调试技巧:

# 查看当前输入法

settings get secure default_input_method

# 强制显示输入法

input keyevent KEYCODE_SETTINGS

综合使用示例

# 1. 修改分辨率

wm size 720x1280

# 2. 降低屏幕亮度

settings put system screen_brightness 30

# 3. 切换输入法

ime set com.google.android.inputmethod.latin/.LatinIME

# 4. 输入文本

input text "测试输入@123"

# 5. 截图保存

screencap /sdcard/test_screen.png

# 6. 恢复设置

wm size reset

settings put system screen_brightness 150

皇家推荐

开心消消乐金银果实怎样查看 果实重生攻略
qq怎么看有没有被拉黑删除
pos机的使用方法
和平精英16岁能玩多久
第一次在车里应该怎么玩?这3个姿势最适合丨技巧
微信个人中心在哪里找