adb

摘要:
ADB(AndroidDebugBridge)ANR(ApplicationNoResponding)ADB实际上是Android调试桥AndroidDebugBridge的缩写。adb是C/S体系结构的命令行工具。这里我们介绍一些常用的命令:adbdevices,获取设备列表和设备状态[xuxu:~]$adbdevicesList-devicesattached44c826a0devicead

ADB(Android Debug Bridge) ANR(Application No Responding)

adb其实就是Android Debug Bridge, Android 调试桥的缩写,adb 是一个C/S架构的命令行工具

这里介绍一些里面常用的命令:

  • adb devices , 获取设备列表及设备状态

    [xuxu:~]$ adb devices
    List of devices attached 
    44c826a0    device  
  • adb get-state , 获取设备的状态

    [xuxu:~]$ adb get-state  
    device

    设备的状态有 3 钟,device,offline,unknown

    device:设备正常连接

    offline:连接出现异常,设备无响应

    unknown:没有连接设备

  • adb kill-server , adb start-server , 结束 adb 服务, 启动 adb 服务,通常两个命令一起用

    一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务

  • adb logcat , 打印 Android 的系统日志,这个可以单独拿出来讲

  • adb bugreport , 打印dumpsys、dumpstate、logcat的输出,也是用于分析错误

    输出比较多,建议重定向到一个文件中

    adb bugreport > d:ugreport.log
  • adb install , 安装应用,覆盖安装是使用 -r 选项

    windows 下如果需要安装含有中文名的 apk ,需要对 adb 进行修改,百度可以找到做出修改的adb , 支持中文命令的 apk,请自行搜索

  • adb uninstall , 卸载应用,后面跟的参数是应用的包名,请区别于apk 文件名

    '-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录

  • adb pull , 将 Android 设备上的文件或者文件夹复制到本地

    例如复制 Sdcard 下的 pull.txt 文件到 D 盘:

    adb pull sdcard/pull.txt d:

    如果需要重命名为 rename.txt:

    adb pull sdcard/pull.txt d:rename.txt
  • adb push , 推送本地文件至 Android 设备

    例如推送 D 盘下的 push.txt 至 Sdcard:

    adb push d:push.txt sdcard/

    sdcard 后面的斜杠不能少,否则会出现下面的错误:

    [xuxu:~]$ adb push push.txt sdcard
    failed to copy 'push.txt' to 'sdcard': Is a directory

    权限问题同 pull 命令

  • 导入/导出log:
  • 打开log指令: logon#
    打开Slog指令:  adb shell slogctl enable    
    
    
    导出log指令: adb pull storage/emulated/legacy/Location.txt
    导出slog指令:adb pull data/slog
  • adb root , adb remount, 只针对类似小米开发版的手机有用,可以直接已这两个命令获取 root 权限,并挂载系统文件系统为可读写状态

  • adb reboot , 重启 Android 设备

    bootloader , 重启设备,进入 fastboot 模式,同 adb reboot-bootloader 命令

    recovery , 重启设备,进入 recovery 模式,经常刷机的同学比较熟悉这个模式

  • adb forward , 将 宿主机上的某个端口重定向到设备的某个端口

    adb forward tcp:1314 tcp :8888

    执行该命令后所有发往宿主机 1314 端口的消息、数据都会转发到 Android 设备的 8888 端口上,因此可以通过远程的方式控制 Android 设备。

  • adb connect 远程连接 Android 设备

adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下

  • pm list package 列出安装在设备上的应用

    不带任何选项:列出所有的应用的包名(不知道怎么找应用的包名的同学看这里)

    adb shellpm list package

    -s:列出系统应用

    adb shellpm list package -s 

    -3:列出第三方应用

    adb shellpm list package -3

    -f:列出应用包名及对应的apk名及存放位置

    adb shellpm list package -f

    -i:列出应用包名及其安装来源,结果显示例子:

    package:com.zhihu.android installer=com.xiaomi.market

    adb shellpm list package -i

    命令最后增加 FILTER:过滤关键字,可以很方便地查找自己想要的应用

    参数组合使用,例如,查找三方应用中知乎的包名、apk存放位置、安装来源:

    [xuxu:~]$ adb shell pm list package -f -3 -i zhihu
    package:/data/app/com.zhihu.android-1.apk=com.zhihu.android  installer=com.xiaomi.market
  • 查看设备上进程的cpu和内存占用情况

    adb shell top

  • 查看顶层应用

adb shell dumpsys activity | findstr mFocusedActivity (windows 7.0)

adb shell dumpsys activity activities | findstr mResumedActivity(windows8.0)

adb shell dumpsys activity | grep “mFocusedActivity”(linux 7.0)

adb shell dumpsys activity activities | grepmResumedActivity(linux 7.0)

发送广播:

  adb shell am broadcast -a "broadcastactionfilter"

  • 启动Activity:

    adb shell am start 包名/完整Activity路径
     例如:

adb shell am start com.zhy.aaa/com.zhy.aaa.MainActivity

adb shell am monitor监控应用,显示报名

屏幕截图:

  • 截屏

    adb shell/system/bin/screencap -p路径/文件名.后缀名

    adb shell /system/bin/screencap -p /sdcard/screenshot.png (保存到SDCard,手机端无截图动态,在图库可查看)

    adb pull手机图片路径电脑图片路径

    adb pull /sdcard/screenshot.pngD:/log (保存到电脑)

可以使用screenrecord[options] filename命令来录制屏幕视频,例如:

      adb shellscreenrecord /sdcard/demo.mp4
    • 查看手机电量信息
      adb shell dumpsys battery

    • 模拟手机充电状态
      adb shell dumpsys battery set status 2

    • 模拟手机为非充电状态
      adb shell dumpsys battery set status 1

    • 模拟手机断开充电
      adb shell dumpsys battery unplug

    • 模拟手机电量
      adb shell dumpsys battery set level X
      X 代表电池百分比

    • 复位,恢复实际状态
      adb shell dumpsys battery reset

dumpsys:
dumpsys命令可以提供非常多的系统信息。可以通过adb shell service list来查看dumpsys能提供查询信息的服务,常用的有:

服务类名功能
activityActivityManagerServiceAMS相关信息
packagePackageManagerServicePMS相关信息
windowWindowManagerServiceWMS相关信息
inputInputManagerServiceIMS相关信息
powerPowerManagerServicePMS相关信息
procstatsProcessStatsService进程统计
batteryBatteryService电池信息
alarmAlarmManagerService闹钟信息
meminfoMemBinder内存

adb shell dumpsys [options]

该命令用于打印出当前系统信息,默认打印出设备中所有service的信息。由于service比较多,这里选几个用的比较多的service来进行讲解:

battery-----------------------电池状态

batteryproperties-------------电池属性

batterystats-------------------电池状态

cpuinfo--------------------------cpu信息

devicestoragemonitor----------------设备存储监视器

diskstats----------------------------磁盘统计

ioinfo---------------------------I/O信息

meminfo-----------------------------内存信息

mount--------------------------------挂载信息

netstats-------------------------------网络统计

network_management----------网络管理

package-------------------------------包信息

processinfo---------------------------进程信息

procstats------------------------------进程统计

gfxinfo-------------------------------有关与录制阶段期间发生的动画帧相关的性能信息

要查看电池信息,命令行输入adb shell dumpsys battery

C:UsersAdministrator>adb shell dumpsys battery
Current Battery Service state:
  AC powered: false
  USB powered: true
  Wireless powered: false
  Max charging current: 500000
  Max charging voltage: 4748000
  Charge counter: 380000
  status: 2
  health: 2
  present: true
  level: 36
  scale: 100
  voltage: 3831
  temperature: 330
  technology: Li-poly
  • pm path 列出对应包名的 .apk 位置

    [xuxu:~]$ adb shell pm path com.tencent.mobileqq
    package:/data/app/com.tencent.mobileqq-1.apk
  • pm list instrumentation , 列出含有单元测试 case 的应用,后面可跟参数 -f (与 pm list package 中一样),以及 [TARGET-PACKAGE]

    • pm clear , 清除应用数据

    • pm set-install-location , pm get-install-location , 设置应用安装位置,获取应用安装位置[0/auto]:默认为自动

    • [1/internal]:默认为安装在手机内部

      [2/external]:默认安装在外部存储

    • 打电话:adb shell am start -a android.intent.action.CALL -dtel:10086

    • input事件输入:

  • 这个命令可以向 Android 设备发送按键事件,其源码Input.java

    • input text , 发送文本内容,不能发送中文

      adb shellinput text test123456

      前提先将键盘设置为英文键盘

    • input keyevent , 发送按键事件,KeyEvent.java

      adb shellinput keyevent KEYCODE_HOME

      模拟按下 Home 键 ,源码里面有定义:

      public static final int KEYCODE_HOME = 3;

      因此可以将命令中的KEYCODE_HOME替换为3

    • adb shell input keyevent <keycode>命令,不同的 keycode 能实现不同的功能,完整的 keycode 列表详见KeyEvent,摘引部分我觉得有意思的如下:

      keycode含义
      3HOME 键
      4返回键
      5打开拨号应用
      6挂断电话
      24增加音量
      25降低音量
      26电源键
      27拍照(需要在相机应用里)
      64打开浏览器
      82菜单键
      85播放/暂停
      86停止播放
      87播放下一首
      88播放上一首
      122移动光标到行首或列表顶部
      123移动光标到行末或列表底部
      126恢复播放
      127暂停播放
      164静音
      176打开系统设置
      187切换应用
      207打开联系人
      208打开日历
      210打开计算器
      220降低屏幕亮度
      221提高屏幕亮度
      223系统休眠
      224点亮屏幕
      231打开语音助手
      276如果没有 wakelock 则让系统休眠
    • input tap , 对屏幕发送一个触摸事件

      adb shellinput tap 500 500

      点击屏幕上坐标为 500 500 的位置

    • input swipe , 滑动事件

      adb shellinput swipe 900 500 100 500

      从右往左滑动屏幕

      如果版本不低于 4.4 , 可以模拟长按事件

      adb shellinput swipe 500 500 501 501 2000
    • wm

      [xuxu:~]$ adb shellwm size
      Physical size: 1080x1920 
    • 这是一个对指定应用(Android自带的系统设置应用)进行 Monkey 测试的例子,发送的事件流数目为1000:

      1
      adb shell monkey -p com.android.settings 1000
    • 常用选项及参数说明
      • -p允许的包名列表,可同时指定多个包名,每个包都需要使用“-p”参数指定。包名的获取,可参考 python 脚本get_package_name.py
      • —ignore-crashes忽视应用 crash 报错,不指定该参数时,应用出现 crash,monkey 会自动停止发送事件,指定该参数后,mongkey 会在 crash 后也一直发送事件,知道所有事件发送完成
      • —ignore-timeouts忽视超时导致的错误,即ANR的错误
      • —ignore-security-exceptions忽视权限方面的错误
      • —monitor-native-crashes监控由 C/C++ 代码引起的 crash
      • —ignore-native-crashes忽视由 C/C++ 代码引起的 crash
      • —kill-process-after-error当出现错误后杀掉应用的进程
      • —hprof指定该选项后,monkey会在发送事件完成后生成性能报告,报告一般存放于/data/misc目录下,对报告的分析,需要使用Traceview
      • —pct-touch设定 touch 事件比例
      • —pct-motion设定手势事件比例,例如滑动事件
      • —pct-trackball设定跟踪球事件的比例
      • —pct-syskeys设定系统按键事件的比例,如 Home、Back、音量+/-等
      • —pct-nav设定”基本”导航事件的比例
      • —pct-majornav设定”主要”导航事件比例
      • —pct-appswitch设定启动 Activity 的事件比例
      • —pct-pinchzoom设定缩放事件比例
      • —pct-anyevent设定其他事件比例
      • -s设定种子数,方便用于重现 bug
      • -v设定输出信息的详细级别,1个 -v 表示级别为1,2个 -v 表示级别为2;仅提供启动提示、测试完成和最终结果等少量信息;提供较为详细的日志,包括每个发送到Activity的事件信息;包括了测试中选中/未选中的Activity信息;
      • —throttle设定事件之间的延时,单位为毫秒
      • COUNT事件数目
      • 结束Monkey进程

        执行 Monkey 的过程中如果想中途停止 Monkey 程序的运行,需要将 Monkey 的进程杀掉。

        • windows 下使用findstr,linux/mac 下用grep
        • 执行adb shell ps | findstr monkey
        • 获取到 monkey 进程的 pid 之后运行adb shell kill 进程ID

免责声明:文章转载自《adb》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Winform知识点建行手机银行4.0版本转账怎么不要求输入支付密码?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【windows】在控制面板卸载软件的时候,出现2502,2503的问题

1、 打开“任务管理器”,找到“详细信息”的页签,将“explorer.exe”的进程结束任务 2、菜单栏的“文件”-->"建立新任务"--> 输入Explorer.exe,并且勾选“以管理员的身份执行任务” 3. 再从控制面板卸载软件则不会报错了...

解决录制视频播放正常,导入编辑软件后期编辑时声画不同步的问题

相信很多up在录制完游戏视频或其他一些视频后都会进行的一些后期剪辑,但是当我们把录出的视频导入到剪辑软件后却发现视频声画不同步,但用播放器观看源视频却没有不同步这个问题。这一般来说是因为我们录制出来的视频是【动态帧率】或,是因为在录制过程中由于电脑硬件跟不上,导致视频帧率出现严重跳动导致的声画不同步。主要原因:视频帧率不稳定解决方法:1、选择支持动态帧率的...

Android Service和广播

前言: 我们都知道Android的四大基本组件:Activity、ContentProvider、Service以及BroadcastReceiver,前面的两个我们在前几篇已经具体讲解了,今天这一天我们就把后两者的使用具体说一下,由于Service和BroadcastReceiver常常一起使用,所以我们一起来学习。     一.Service的使用 S...

SAP NetWeaver Business Client (NWBC) 简介

SAP NetWeaver Business Client (NWBC) 简介 学习版本NWBC v3.0 1.NWBC 简介 SAP NetWeaver Business Client (NWBC) 是新一代SAP用户界面,集成了SAPGUI事务和新的web dynpro应用,类似于桌面应用程序。 SAP NetWeaver商业客户(NWBC)是...

linux free 命令下free/available区别

转载于https://www.jianshu.com/p/2ffeb3a3aa90 例子 [root@VM_16_17_centos bin]# free total used free shared buff/cache available Mem: 1882892...

投票网站如何防止机器刷票

本文为姜友瑶原创作品 非商业转载请注明作译者、出处,并保留本文的原始链接。否则追究法律责任!商业转载请联系作者! 更多作品请访问我的个人网站 www.jyymatrix.cc 其实我自己没有用过刷票软件,但是我和刷票软件之间却有过战斗! 之前帮学校做的投票网站再次上线后发现还是遇到了投票软件的攻击。后面我也好奇于是去网上找了一些关于刷票软件的资料。 看看...