本文链接: https://blog.csdn.net/xietansheng/article/details/86675136

adb其他命令介绍详见上一篇: Android SDK: adb 常用命令的使用(无线连接、端口转发、文件传输、APK安装卸载、Logcat日志)

1. adb shell

通过 Android SDK 的adb shell命令可以向已连接的 Android 设备或模拟器发送 shell 命令。adb shell 命令官网介绍。

执行 shell 命令方式一:

# 不进入远程 shell 的情况下, 直接执行 shell 命令, 执行完后退出adb shell <shell_commands>

执行 shell 命令方式二:

adb shell           # 先远程登录到 Android 设备的 shell 环境, shell_commands      # 然后再持续执行 shell 命令...exit                # 退出登录

命令示例:

adb shell getprop       # 获取设备的属性信息# 或adb shell               # 先登录到远程 shell 环境getprop                 # 再执行命令(获取设备的属性信息)

Android 系统内核是 Linux,所以许多 Linux 系统的命令在 Android 系统中都可以使用,Linux 系统常用命令参考:

  • Linux常用命令:文件操作、压缩解压(tar/gzip/bzip2/zip/unzip)
  • Linux用户和权限管理:用户/组增删改查、文件权限
  • Linux系统管理命令:进程、网络、磁盘、关机重启等

下面介绍几个 Android 系统特有的几个实用的命令(am, pm, wm, ...)。

2. Activity Manager: am

am是 Activity 管理命令,可以使用该命令执行各种系统操作,例如 启动Activity、强行停止进程、开启服务、发送广播等。Activity Manager(am)命令官网介绍。

  • 查看帮助
am# 或am help
  • 启动 Activity
命令格式: am start <intent>intent 参数:    -n      # component, intent 组件, 格式为: "包名/组件名", 例如 "com.example.app/.StartActivity"    -a      # action, intent 动作, 例如 "android.intent.action.VIEW"    -c      # category, intent 类别, 例如 "android.intent.category.BROWSABLE"    -f      # flags, 和 intent.setFlags(int) 方法相同        -d      # data_uri,  intent 数据URI, 例如 "file:///mnt/sdcard/aa.png"    -t      # mime_type, intent MIME类型, 例如 "image/png"        -e      # 和 --es 相同    --esn   # 添加 null extra,     格式: --esn extra_key    --es    # 添加 string extra,   格式: --es extra_key string_value    --ei    # 添加 int extra,      格式: --ei extra_key int_value    --el    # 添加 long extra,     格式: --el extra_key long_value    --ef    # 添加 float extra,    格式: --ef extra_key float_value    --ez    # 添加 boolean extra,  格式: --ez extra_key boolean_value    --eu    # 添加 uri extra,      格式: --es extra_key uri_value命令示例:    # 让手机默认浏览器打开一个网页    am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d https://m.baidu.com        # 打开电话拨号盘    am start -a android.intent.action.DIAL -d tel:10086        # 打电话    am start -a android.intent.action.CALL -d tel:10086        # 打开微信, 微信(v6.7.3)的主入口 Activity 为 com.tencent.mm.ui.LauncherUI    am start -n com.tencent.mm/.ui.LauncherUI        # 打开微信(完整的启动 APP 命令)    am start -n com.tencent.mm/.ui.LauncherUI -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
  • 启动服务
命令格式: am startservice <intent>intent 参数参考 am start 命令中的介绍命令示例:    # 启动包名为 com.example.app 的 APP 中的 com.example.app.MyService 服务    am startservice -n com.example.app/.MyService
  • 发送广播
命令格式: am broadcast <intent>intent 参数参考 am start 命令中的介绍命令示例:    # 发送 SD 卡挂载完成的广播    am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///mnt/sdcard/
  • 终止进程
命令格式: am kill <package>  或  am kill-all命令示例:    # 终止与包名 com.example.app 关联的所有进程    am kill com.example.app        # 终止所有后台进程    am kill-all
  • 强行停止应用
命令格式: am force-stop <package>命令示例:    # 强行停止与包名 com.example.app 关联的所有应用    am force-stop com.example.app

3. Package Manager: pm

pm是包管理命令,即应用管理器,可以使用该命令对设备的软件包(APP)进行管理,例如安装、查看、卸载等。Package Manager(pm)命令官网介绍

  • 查看帮助
pm# 或pm help
  • 查看软件包列表
命令格式: pm list packages [options] [package_name_filter]options 常用参数:    -f      # 查看它们关联的文件    -d      # 过滤, 只显示停用软件的包(disabled)    -e      # 过滤, 只显示启用的软件包(enabled)    -s      # 过滤, 只显示系统的软件包(system)    -3      # 过滤, 只显示第三方的软件包(third)    -i      # 查看软件包的安装器    -u      # 包含已卸载的软件包命令示例:    pm list packages                # 列出所有已安装的软件包    pm list packages com.example    # 列出所有包名包含 com.example 的软件包    pm list packages -3             # 列出所有第三方软件包(非系统自带的, 自己安装的APP)    pm list packages -d             # 列出所有被停用的软件包
  • 安装软件包
命令格式: pm install [options] <apk_path>options 常用参数:    -r      # 替换已安装的包,保留其数据    -d      # 允许版本降级安装(只限 debug 包)    -g      # 授予所有运行时权限apk_path 参数: 注意这里的 apk 路径指的是 Android 文件系统中的路径命令示例:    pm install /sdcard/demo.apk             # 从 SD 卡中安装 APK    pm install /data/local/tmp/temp.apk     # 从 Android 设备临时目录安装一个 APK    pm install -r /sdcard/demo.apk          # 安装 APK, 替换掉当前版本
  • 卸载软件包
命令格式: pm uninstall [options] <package>options 参数:    -k      # 移除软件包后保留其数据和缓存目录命令示例:    pm uninstall com.example.app        # 卸载软件包, 并删除数据    pm uninstall -k com.example.app     # 卸载软件包, 保留其数据
  • 删除软件包数据
命令格式: pm clear <package>命令示例:    pm clear com.example.app            # 删除软件包关联的所有数据
  • 停用软件包
命令格式: pm enable <package_or_component>命令示例:    pm enable com.example.app           # 停用软件包, 停用后 APP 启动图标将被隐藏
  • 启用软件包
命令格式: pm disable <package_or_component>命令示例:    pm disable com.example.app           # 启用软件包
  • 软件包授权
命令格式: pm grant <package> <permission>命令示例:    # 给软件包授予写外部存储器的权限    pm grant com.example.app android.permission.WRITE_EXTERNAL_STORAGE
  • 软件包撤销权限
命令格式: pm revoke <package> <permission>命令示例:    # 撤回软件包读写外部存储器的权限    pm revoke com.example.app android.permission.READ_EXTERNAL_STORAGE    pm revoke com.example.app android.permission.WRITE_EXTERNAL_STORAGE

4. Window Manager: wm

wm窗口管理命令可以获取屏幕的 分辨率像素密度 等信息,甚至可以临时修改屏幕的 分辨率像素密度 等参数,可以很方便地查看 APP 在不同像分辨率和素密度手机/平板上的显示效果。

  • 查看帮助
wm# 或wm help
  • 查看 屏幕分辨率 和 像素密度
wm size                 # 查看屏幕的 分辨率, 单位: pxwm density              # 查看屏幕的 像素密度, 单位: dpi(dots per inch)
  • 修改 屏幕分辨率 和 像素密度
wm size 720x1280        # 把屏幕分辨率(宽x高)修改为: 720px * 1280pxwm size 360dpx640dp     # 把屏幕分辨率(宽x高)修改为: 360dp * 640dp                        # dp 单位将根据当前 density 自动转换为 pxwm density 360          # 把屏幕像素密度改为 360 dpiwm size reset           # 撤销对屏幕分辨率的修改(改回真实的物理分辨率)wm density reset        # 撤销对屏幕像素密度的修改(改回真实的像素密度)

屏幕尺寸、分辨率、像素密度 这三个参数时相互关联的,可以由其中两个参数算出第三个参数,像素密度的单位是 dpi(即每英寸的像素点数量),因此有下列公式:

                    像素点数(px)物理尺寸(inch) = ---------------------                  像素密度(px/inch)

修改 分辨率 和 像素密度,实际上修改后导致的是屏幕尺寸的变化,当然这个改变是虚拟的,只不过是修改成和指定尺寸屏幕的显示效果(显示内容的多少)一致:

  • 分辨率相同,像素密度(density) 越大,屏幕尺寸越小,显示的内容越少(dp/sp 作为显示单位)。
  • 分辨率相同,像素密度(density) 越小,屏幕尺寸越大,显示的内容越多(dp/sp 作为显示单位)。

5. 屏幕截图: screencap

screencap命令可以对设备显示屏当前显示的内容进行截屏。语法格式:

命令格式: screencap [options] <save_file>options 参数:    -h      # 输出帮助信息    -p      # 保存为 png 格式    -d      # 指定显示器(多屏幕显示的情况), 默认为0命令示例:    screencap /mnt/sdcard/demo.png      # 截屏保存到 SD 卡# PS: 命令是在 Android 设备中, 保存的文件路径是 Android 系统的文件路径;#     如果保存的文件名后缀为 .png, 将自动保存为 png 格式;#     如果没有给定保存的文件位置, 截屏结果将输出到标准输出流。

不登录远程 shell,直接截屏并把图片拉取到 PC 本地:

# 截屏临时保存到 Android 系统的临时目录adb shell screencap /data/local/tmp/demo.png# 拉取截取的图片保存到本地adb pull /data/local/tmp/demo.png# 删除在 Android 系统临时目录生成的截屏adb shell rm /data/local/tmp/demo.png

6. 屏幕录制: screenrecord

screenrecord命令是一个录制 Android 设备(Android 4.4+ 版本)屏幕视频的实用工具,该命令将屏幕录制成 MPET-4 格式的视频文件。

语法格式:

命令格式: screenrecord [options] <save_file>options 参数:    --help          # 输出帮助信息    --size          # 录制的尺寸, 宽x高, 默认值是设备屏幕的原生分辨率(如果支持),                     # 如果不支持, 则使用 1280x720。    --bit-rate      # 设置录制视频的比特率(bit/s), 比特率越高视频质量越高,                     # 但文件存储也会变大。例如设置为 4Mbps: --bit-rate 4000000    --time-limit    # 设置最大录制时长(单位为秒), 默认值和最大值均为 180(3分钟)        --verbose       # 录制时显示日志信息        --rotate        # 旋转 90 度输出(此功能为实验性)结束录制: 录制时按下 Ctrl+C 或 到达 --time-limit 指定时间命令示例:    # 录制屏幕, 保存到 SD 卡    screenrecord /sdcard/demo.mp4        # 录制屏幕, 指定录制宽高为 720x1280, 比特率为 4Mbps, 录制 30 秒    screenrecord --size 720x1280 --bit-rate 4000000 --time-limit 30

录制屏幕,完成后拉取到 PC 本地:

# 录制屏幕, 保存到 SD 卡adb shell screenrecord /sdcard/demo.mp4# 把 SD 卡保存的录屏拉取到 PC 本地adb pull /sdcard/demo.mp4

PS: 有些手机系统把 screenrecord 命令移除了,通常移除了该命令的手机系统都会另外提供自带的录屏工具,但需要在手机上操作录屏。

7. 获取设备属性信息: getprop

getprop命令用于获取 Android 系统的各项属性信息。语法格式:

getprop [NAME [DEFAULT]]

常用属性示例:

getprop                             # 列出所有属性信息getprop ro.product.manufacturer# 获取设备的厂商, 例如: HUAWEIgetprop ro.product.brand            # 获取设备的商标, 例如: HUAWEIgetprop ro.product.model            # 获取设备的型号, 例如: BLA-AL00getprop ro.build.version.release    # 获取设备的 Android 版本, 例如: 8.1.0getprop ro.build.version.sdk        # 获取设备的 SDK Version, 例如: 27getprop ro.boot.serialno            # 获取设备的序列号, 例如: 8FE0917B20005668getprop ro.board.platform           # 获取设备的 CUP 平台, 例如: kirin970getprop dalvik.vm.heapstartsize     # 虚拟机进程的分配的初始堆内存大小getprop dalvik.vm.heapgrowthlimit   # 虚拟机进程的堆内存增长极限大小getprop dalvik.vm.heapsize          # 虚拟机进程的堆内存大小

8. 自动化测试: monkey

monkey命令是一个用于对应用程序进行压力测试的实用工具,该命令随机发送指定次数的用户事件流(按键输入、触屏、手势等)到 APP 界面。monkey 是猴子的单词,顾名思义就是在手机 APP 上蹿下跳不断地随意乱输入一通。

  • 语法格式:
Usage: monkey [options] <COUNT>options 参数:    -p <allowed_package>            # 允许测试的软件包, 可以指定多个 -p 参数支持多个软件包    -c <main_category>              # 主分类, 可以指定多个 -c 参数        --ignore-crashes                # 忽略崩溃, 继续执行事件    --ignore-native-crashes         # 忽略 native 崩溃, 继续执行事件    --ignore-timeouts               # 忽略超时, 继续执行事件    --ignore-security-exceptions    # 忽略安全异常, 继续执行事件    --monitor-native-crashes        # 监控 native 崩溃        --kill-process-after-error      # 发生错误时杀死进程    --hprof    --match-description <text>        --pct-touch <percent>           # 触摸事件百分比, 例如指定触摸事件比例为 30%, 格式为: --pct-touch 30    --pct-motion <percent>          # 手势动作事件百分比, 所有事件百分比之和不能超过 100%    --pct-trackball <percent>       # 轨迹事件百分比     --pct-syskeys <percent>         # 系统按键事件百分比    --pct-nav <percent>             # 基本导航事件百分比    --pct-majornav <percent>        # 主要导航事件百分比    --pct-appswitch <percent>       # APP 切换事件百分比    --pct-flip <percent>            # 弹事件百分比    --pct-anyevent <percent>        # 其他事件百分比    --pct-pinchzoom <percent>       # 缩放(捏)事件百分比    --pct-permission <percent>      # 权限事件百分比        --pkg-blacklist-file <file>     #     --pkg-whitelist-file <file>     #         --wait-dbg                      # 如果 adb 断开, 等待 adb 连接, 直到 adb 恢复连接后继续执行 monkey    --dbg-no-events                     --setup scriptfile    -f <scriptfile>                 # 指定用于测试的脚步文件, 可以指定多个 -f 参数    --port <port>    -s <seed>                       # 产生伪随机事件的种子, 相同的 -s 产生的事件流相同, 格式(可指定多个-s): -s 1    -v                              # 反馈信息级别, -v 越多个, 输如的日志信息越详细, 最多支持 3 个 -v    --throttle <ms>                 # 事件之间的间隔(单位为毫秒), 例如 200毫秒 的格式: --throttle 200    --randomize-throttle            # 随机事件间隔时间    --profile-wait <ms>             #     --device-sleep-time <ms>        #     --randomize-script              #    --script-log                    #     --bugreport                     #     --periodic-bugreport            #     --permission-target-system      # 
  • 命令示例:
# 在 com.example.app 这个 APP 上随机发送 10000 个事件monkey -p com.example.app 10000    # 事件间隔10毫秒, 随机发送 10000 个事件monkey -p com.example.app --throttle 10 10000    # 触屏事件占 30%, 手势事件占 10%, 发送 10000 个事件monkey -p com.example.app --pct-touch 30 --pct-motion 10 10000

9. 其他 Shell 命令: /system/bin

acpi              am                     app_process      app_process32app_process64     applypatch             appops           appwidgetatrace            awk                    base64           basenamebcc               blockdev               bmgr             bubugreport         bugreportz             bunzip2          bzcatbzip2             cal                    cat              chconchgrp             chmod                  chown            chrootchrt              cksum                  clear            cmdcmp               comm                   content          cpcpio              crash_dump32           crash_dump64     cutdalvikvm          dalvikvm32             dalvikvm64       datedd                debuggerd              dex2oat          dexdiagdexdump           dexlist                df               diffdirname           dmesg                  dos2unix         dpmdu                dumpsys                echo             egrepenv               expand                 expr             fallocatefalse             fgrep                  file             findflock             fmt                    free             getenforcegetevent          getprop                grep             groupsgunzip            gzip                   head             hidhostname          hw                     hwclock          idifconfig          ime                    incident         inotifydinput             insmod                 ionice           ioreniceip                ip-wrapper-1.0         ip6tables        ip6tables-restoreip6tables-save    ip6tables-wrapper-1.0  iptables         iptables-restoreiptables-save     iptables-wrapper-1.0   keystore_cli_v2  killkillall           ld.mc                  linker           linker64linker_asan       linker_asan64          ln               load_policylocksettings      log                    logcat           lognamelogwrapper        losetup                ls               lshallsmod             lsof                   lspci            lsusbmd5sum            media                  microcom         mkdirmkfifo            mkfs.ext2              mkfs.ext3        mkfs.ext4mknod             mkswap                 mktemp           modinfomodprobe          monkey                 more             mountmountpoint        mv                     ndc              ndc-wrapper-1.0netstat           newfs_msdos            nice             nlnohup             oatdump                od               otapreoptotapreopt_script  paste                  patch            patchoatperfetto          pgrep                  pidof            pingping6             pkill                  pm               pmapprintenv          printf                 ps               pwdreadlink          realpath               reboot           renicerequestsync       resize2fs              restorecon       rmrmdir             rmmod                  run-as           runconschedtest         screencap              screenrecord     secdiscardsecilc            sed                    sendevent        sensorserviceseq               service                setenforce       setpropsetsid            settings               sh               sha1sumsha224sum         sha256sum              sha384sum        sha512sumsleep             sm                     sort             splitstart             stat                   stop             stringsstty              svc                    swapoff          swaponsync              sysctl                 tac              tailtar               taskset                tc               tc-wrapper-1.0tee               telecom                time             timeouttoolbox           top                    touch            toyboxtr                true                   truncate         ttytzdatacheck       uiautomator            ulimit           umountuname             uniq                   unix2dos         uptimeusleep            uudecode               uuencode         vmstatvr                wc                     which            whoamiwm                xargs                  xxd              yeszcat

更多相关文章

  1. Android应用程序中执行二进制命令
  2. Android常用的几个命令
  3. ADB命令大全
  4. Android运行底层linux外部命令的实现
  5. Android的多语言文件转IOS多语言文件格式
  6. Android 自动编译、打包生成apk文件 1 - 命令行方式
  7. android 命令介绍
  8. 命令行开发、编译、打包Android应用程序

随机推荐

  1. android DatePicker和TimePicke用法
  2. Android(安卓)Studio(Gradle)解决库依赖
  3. android UI menu code
  4. android Socket实现简单聊天小程序
  5. Android(安卓)Dialog 简单封装
  6. Android利用canvas画各种图形
  7. android 自定义LinearLayout
  8. Android(安卓)EditText 让编辑框只能输入
  9. Android应用开发相关下载资源
  10. android webview 自己跳转