当前位置: 首页 > news >正文

ADB Shell 命令

AI 汇总,用于速查。

一、活动管理器

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


1. 组件启动与操作

  • 启动 Activity
    start [options] <INTENT>
    示例:adb shell am start -n com.example/.MainActivity
  • 启动 Service
    startservice [options] <INTENT>
    示例:adb shell am startservice -n com.example/.MyService
  • 绑定 Service
    bindservice [options] <INTENT>
    示例:adb shell am bindservice -n com.example/.MyService
  • 停止 Service
    stopservice [options] <INTENT>
    示例:adb shell am stopservice -n com.example/.MyService
  • 发送广播
    broadcast [options] <INTENT>
    示例:adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

2. 进程与应用管理

  • 强制停止应用
    force-stop <PACKAGE>
    示例:adb shell am force-stop com.example.app
  • 终止进程
    kill [options] <PACKAGE>
    示例:adb shell am kill com.example.app
  • 清除应用数据
    clear-app-data <PACKAGE>
    示例:adb shell am clear-app-data com.example.app

3. 调试与性能分析

  • 启动性能分析
    profile start <PROCESS> <FILE>
    示例:adb shell am profile com.example.app start /sdcard/profile.trace
  • 停止性能分析
    profile stop <PROCESS>
    示例:adb shell am profile com.example.app stop
  • 设置调试应用
    set-debug-app [options] <PACKAGE>
    示例:adb shell am set-debug-app -w com.example.app
  • 清除调试应用设置
    clear-debug-app

4. Instrumentation 测试

  • 运行测试用例
    instrument [options] <COMPONENT>
    示例:
    adb shell am instrument -w com.example.test/androidx.test.runner.AndroidJUnitRunner
    

5. 用户与多任务管理

  • 切换用户
    switch-user <USER_ID>
    示例:adb shell am switch-user 1
  • 启动用户
    start-user <USER_ID>
    示例:adb shell am start-user 1
  • 停止用户
    stop-user [options] <USER_ID>
    示例:adb shell am stop-user -f 1
  • 任务栈操作
    stack move-task <TASK_ID> <STACK_ID>
    示例:adb shell am stack move-task 1 2

6. 设备显示设置

  • 修改显示尺寸
    display-size <WIDTH>x<HEIGHT>
    示例:adb shell am display-size 800x600
  • 修改显示密度
    display-density <DPI>
    示例:adb shell am display-density 240

7. 其他工具

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

常用 Intent 参数选项

在启动组件时,可通过以下选项构建 Intent:

  • -a <ACTION>:指定 Action(如 android.intent.action.VIEW)。
  • -n <COMPONENT>:指定组件名(包名/类名)。
  • -d <DATA_URI>:设置数据 URI(如 https://example.com)。
  • -t <MIME_TYPE>:设置 MIME 类型(如 image/png)。
  • -f <FLAGS>:添加 Intent Flags(如 0x10000000)。
  • --es <EXTRA_KEY> <EXTRA_STRING_VALUE>:添加字符串 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 <PACKAGE>
    示例:adb shell pm path com.android.chrome
  • 查看包详细信息
    dump <PACKAGE>
    示例:adb shell pm dump com.android.chrome

2. 包安装与卸载

  • 安装APK
    install [options] <APK_PATH>
    示例:
    adb shell pm install /sdcard/app.apk
    adb shell pm install -t -g app.apk  # 允许测试并授予所有权限
    
  • 卸载应用
    uninstall [options] <PACKAGE>
    示例:
    adb shell pm uninstall com.example.app
    adb shell pm uninstall -k com.example.app  # 卸载但保留数据
    

3. 权限管理

  • 授予权限
    grant <PACKAGE> <PERMISSION>
    示例:
    adb shell pm grant com.example.app android.permission.CAMERA
    
  • 撤销权限
    revoke <PACKAGE> <PERMISSION>
    示例:
    adb shell pm revoke com.example.app android.permission.ACCESS_FINE_LOCATION
    
  • 重置权限
    reset-permissions
    示例:adb shell pm reset-permissions

4. 包状态控制

  • 启用/禁用组件
    enable <PACKAGE/COMPONENT>
    disable <PACKAGE/COMPONENT>
    disable-user <PACKAGE>(仅对当前用户禁用)
    示例:
    adb shell pm disable com.example.app/.MainActivity
    
  • 挂起/恢复应用(Android 9+)
    suspend <PACKAGE>
    unsuspend <PACKAGE>
    示例:adb shell pm suspend com.example.app

5. 用户管理

  • 创建用户
    create-user <USER_NAME>
    示例:adb shell pm create-user test_user
  • 删除用户
    remove-user <USER_ID>
    示例:adb shell pm remove-user 10
  • 列出用户
    list users
    示例:adb shell pm list users

6. 存储与数据管理

  • 清除应用数据
    clear <PACKAGE>
    示例: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-location

7. 编译与优化

  • 编译应用(ART优化)
    compile [options] <PACKAGE>
    示例:
    adb shell pm compile -m speed com.example.app  # 速度优化
    
  • 强制编译所有应用
    force-dex-opt
    示例:adb shell pm force-dex-opt

8. 验证与安全

  • 验证安装包
    verify [options] <URI>
    示例:adb shell pm verify -r /sdcard/app.apk
  • 设置应用链接行为
    set-app-links [options] <PACKAGE> <STATE>
    示例:adb shell pm set-app-links --package com.example.app 1(允许打开链接)

9. 其他工具

  • 修复权限
    reset-permissions(重置运行时权限)
  • 重置偏好设置
    reset-preferred-apps <USER_ID>
    示例:adb shell pm reset-preferred-apps 0

三、设备信息

getpropsetprop 是 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 <service>   # 启动服务 (e.g., "zygote")
    setprop ctl.stop <service>    # 停止服务
    
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. 注意事项

  1. 权限要求

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

    • 临时属性:/dev/__properties__
    • 持久属性:/data/property/*
  3. 危险操作
    错误修改核心属性(如 ro. 前缀)可能导致 系统无法启动

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

    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
模块专用参数
  1. Activity 服务 (activity)

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

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

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

    dumpsys battery [options]
    
    • set [ac|usb|wireless|status] [value]:模拟电池状态
    • reset:重置电池统计
    • 示例:dumpsys battery set level 50

五、monkey测试

monkey 是 Android 平台的压力测试工具,用于模拟用户随机操作事件。以下是完整的命令参数详解,按功能分类说明:


1、基础命令格式

adb shell monkey [options] <event-count>
  • <event-count>:必需参数,指定要发送的随机事件数量(必须放在命令最后)

2、事件类型控制参数

控制不同类型事件的生成比例(默认比例见括号):

参数说明示例
--pct-touch <percent>触摸事件比例(点击屏幕,默认15%)--pct-touch 30
--pct-motion <percent>动作事件比例(滑动/拖动,默认10%)--pct-motion 20
--pct-trackball <percent>轨迹球事件比例(默认0%)--pct-trackball 5
--pct-nav <percent>基本导航事件比例(方向键,默认5%)--pct-nav 10
--pct-majornav <percent>主要导航事件比例(返回/菜单键,默认10%)--pct-majornav 15
--pct-syskeys <percent>系统按键比例(Home/音量键,默认5%)--pct-syskeys 3
--pct-appswitch <percent>应用切换比例(启动Activity,默认15%)--pct-appswitch 25
--pct-anyevent <percent>其他事件比例(默认0%)--pct-anyevent 2
--pct-pinchzoom <percent>双指缩放事件比例(Android 4.1+,默认0%)--pct-pinchzoom 10

3、测试对象约束参数

参数说明示例
-p <package-name>只测试指定包(可多次使用)-p com.android.browser
--ignore-package <package>排除指定包--ignore-package com.xxx
--ignore-crashes忽略崩溃继续测试
--ignore-timeouts忽略ANR继续测试
--ignore-security-exceptions忽略权限错误继续测试
-c <category>只测试指定Intent类别的Activity-c android.intent.category.LAUNCHER

4、调试与日志参数

参数说明示例
-v日志级别(每多一个-v增加详细度)-v -v -v
--dbg-no-events初始化但不发送事件
--setup scriptfile运行前执行脚本--setup /sdcard/init.mks
-f <scriptfile>运行指定脚本(可多次使用)-f /sdcard/test1.mks
--port <port>设置控制端口--port 1080
--wait-dbg等待调试器连接

5、事件流控制参数

参数说明示例
-s <seed>设置随机种子(用于重现测试)-s 12345
--throttle <ms>事件间延迟(毫秒)--throttle 300
--randomize-throttle随机化事件间隔
--monitor-native-crashes监控Native崩溃
--kill-process-after-error出错时杀死进程
--hprof事件前后生成性能分析文件

6、高级配置参数

参数说明示例
--pct-rotation <percent>屏幕旋转事件比例--pct-rotation 5
--pct-permission <percent>权限事件比例--pct-permission 3
--pkg-blacklist-file <file>包黑名单文件--pkg-blacklist-file /sdcard/blacklist.txt
--pkg-whitelist-file <file>包白名单文件--pkg-whitelist-file /sdcard/whitelist.txt
--bugreport崩溃时自动生成bugreport

7、完整命令示例

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、调试技巧

  1. 事件流重现
    使用 -s 参数固定随机种子重现问题场景:

    adb shell monkey -s 12345 -v 1000
    
  2. 实时监控
    结合 logcat 过滤 Monkey 事件:

    adb logcat -s "Monkey"
    
  3. 性能分析
    使用 --hprof 生成内存快照:

    adb shell monkey --hprof -p com.example.app 500
    
  4. 网络控制
    通过端口远程控制 Monkey:

    adb shell monkey --port 1080 1000
    telnet localhost 1080  # 输入命令如:tap 100 200
    

六、自动化开发相关

1. 输入命令 (input)

用于模拟各种输入事件(按键、触摸、文本输入等)

主要参数:
参数说明示例
text <string>输入文本input text "Hello@123"
keyevent <keycode>发送按键事件input keyevent KEYCODE_HOME
tap <x> <y>点击屏幕坐标input tap 500 1200
swipe <x1> <y1> <x2> <y2> [duration]滑动操作input swipe 300 800 300 300 500
draganddrop <x1> <y1> <x2> <y2>拖拽操作input draganddrop 100 100 500 500
press模拟轨迹球按下input press
roll <dx> <dy>模拟轨迹球滚动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 <display-id>指定显示器(多屏设备)screencap -d 1 /sdcard/screen2.png
–auto-rotate根据设备方向自动旋转Android 12+
–crop <x,y,w,h>截取指定区域screencap --crop 100,200,600,800 /sdcard/crop.png
(2) screenrecord 录屏命令
参数说明示例
–size <WIDTHxHEIGHT>设置分辨率screenrecord --size 1280x720 /sdcard/demo.mp4
–bit-rate <RATE>设置比特率(默认4Mbps)screenrecord --bit-rate 6000000 demo.mp4
–time-limit <TIME>设置最大时长(秒,默认180)screenrecord --time-limit 30 demo.mp4
–rotate旋转输出视频90度screenrecord --rotate demo.mp4
–bugreport添加调试信息叠加层screenrecord --bugreport demo.mp4
–show-touches显示触摸操作screenrecord --show-touches demo.mp4

3. 设置提供程序 (settings)

管理系统/安全/全局设置

命令结构:
settings [--user <USER_ID>] <namespace> <command> <key> [value]
命名空间:
命名空间说明
system系统设置(铃声、亮度等)
secure安全设置(位置、输入法等)
global全局设置(ADB、调试选项)
主要命令:
命令说明示例
get <key>获取设置值settings get system screen_brightness
put <key> <value>修改设置值settings put system screen_brightness 150
delete <key>删除设置settings delete secure bluetooth_address
list <namespace>列出所有设置项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 1080x1920
density[reset|DENSITY]获取/设置DPIwm density 420
overscanreset|LEFT,TOP,RIGHT,BOTTOM设置过扫描区域wm overscan 0,0,-100,0
scalingoff|auto显示缩放模式wm scaling auto
dismiss-keyguard解锁屏幕wm dismiss-keyguard
multiwindowenable|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 -s
set <IME_ID>设置默认输入法ime set com.ime/.Keyboard
enable <IME_ID>启用输入法ime enable com.ime/.Keyboard
disable <IME_ID>禁用输入法ime disable com.ime/.Keyboard
reset重置输入法选择
使用流程:
  1. 获取输入法ID:

    adb shell ime list -a
    # 示例输出:com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME
    
  2. 设置默认输入法:

    ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME
    
  3. 切换输入法:

    # 禁用当前输入法
    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
http://www.lryc.cn/news/601777.html

相关文章:

  • 安装redis
  • 2025.7.22总结-幸福的力量
  • 《汇编语言:基于X86处理器》第10章 结构和宏(1)
  • 数据库连接操作详解:左连接、右连接、全连接与内连接
  • LeetCode 239:滑动窗口最大值
  • LeetCode第350题_两个数组的交集II
  • NVMe高速传输之摆脱XDMA设计17:队列管理控制设计(下)
  • 金字塔降低采样
  • 企业IT管理——突发病毒事件应急处理预案模板
  • 【Python系列】使用 memory_profiler 诊断 Flask 应用内存问题
  • 【NLP实践】三、LLM搭建中文知识库:提供RestfulAPI服务
  • 《计算机组成原理与汇编语言程序设计》实验报告四 Debug及指令测试
  • 基于黑马教程——微服务架构解析(一)
  • C/C++核心知识点详解
  • lombok插件@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor的区别
  • 金融科技中的跨境支付、Open API、数字产品服务开发、变革管理
  • 2025C卷 - 华为OD机试七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD
  • SpringSecurity实战:核心配置技巧
  • 由于主库切换归档路径导致的 Oracle DG 无法同步问题的解决过程
  • Python堆栈实现:从基础到高并发系统的核心技术
  • 模拟实现python的sklearn库中的Bunch类以及 load_iris 功能
  • 20250727让飞凌OK3576-C开发板在Rockchip的原厂Android14下通过耳机播音
  • 两个函数的卷积
  • Node.js特训专栏-配置与环境部署:20.PM2进程守护与负载均衡
  • 以使命为帆,结业是重新出发的号角
  • 电科金仓 KingbaseES 深度解码:技术突破・行业实践・沙龙邀约 -- 融合数据库的变革之力
  • 从0开始学linux韦东山教程Linux驱动入门实验班(6)
  • c# everthing.exe 通信
  • Android基础(一) 运行HelloWorld
  • 【java】 IntelliJ IDEA高效编程设置指南