adb命令总结

adb使用的端口是:5037,该端口一旦被占用会导致使用adb命令时无法连接到设备。PC端的手机助手,如360手机助手,应用宝等这类软件自带的adb程序可能会与Android SDK下的adb程序产生冲突。

运行在Android设备上的adb后台进程:

  adb  shell  ps  |  grep  sdbd  ,(Windows请使用findstr替代grep)可以找到该后台进程

以下将adb命令分三部分进行介绍,adb命令、adb  shell命令

adb命令

  • adb  get-state,获取设备的状态  

                设备状态有三种:device(设备连接正常),offline(连接出现异常,设备无响应),unknown(没有连接设备)

  • adb  kill-server ,结束adb服务,adb  start-server启动adb服务
  • adb  bugreport , 打印dumpsys、dumpstate、logcat的输出,用来分析错误                              
    • eg:  adb  bugreport  >  d:ugreport.log
  • adb  install , 安装应用,覆盖安装是使用-r选项(apk)
  • adb  uninstall   应用的包名(区别于apk文件名) ,卸载应用                                                  
    •  -k选项,卸载时保存数据和缓存目录
  • adb  pull  ,将Android设备上的文件或文件夹复制到本地
  • adb  push  本地文件路径    Android设备上的路径  , 推送本地文件至Android设备
  • adb  root  ,  adb  remount   ,只针对类似小米开发版的手机有用,可以直接以这两个命令获取root权限,并挂载系统文件系统为可读写状态
  • adb  reboot  ,  重启Android设备
  • adb  forward  ,  将宿主机上的某个端口重定向到设备的某个端口                                            
    • eg  :    adb  forward   tcp:1314   tcp:8888     (执行该命令后,所有发往1314端口的信息、数据都会转发到Android设备的8888端口上,因此可以远程控制Android设备)

adb  shell命令

adb  shell命令是调用的Android系统中的命令,这些Android特有的命令都放在了Android设备的system/bin目录下

pm(Package  Manager,包管理器)

可以获取到一些安装在Android设备上的应用信息

  • pm  list  package  列出安装在设备上的应用                                                                         
    •  eg : adb  shell  pm  list  package    (不带选项,列出所用的应用的包名)                       
    • -s  : 列出系统应用     adb  shell  pm  list  package  -s                                                   
    • -3  :列出第三方应用   adb  shell  pm  list  package  -3                                                
    •   -f   :列出应用包名及对应的apk名及存放位置   adb  shell  pm  list  package  -f             
    • -i   :列出应用包名及其安装来源    adb  shell  pm  list  package  -i                               
    • 命令最后增加filter:过滤关键字,可以很方便地查找自己想要找的应用                         
    • 参数组合使用,例如,查找第三方应用中“知乎”的包名、apk存放位置、安装来源:          
    • adb  shell  pm  list  package  -f  -3  -i  zhihu
  • pm  path  列出对应包名的 .apk位置                                                                                     
    • eg: adb  shell  pm  path  com.tencent.mobileqq
  • pm  list  instrumentation , 列出含有单元测试case的应用,后面可跟参数-f(与pm  list  package 中一样)
  • pm  dump  包名,列出指定应用的dump信息,里面有各种信息,自行查看                         
    • eg: adb  shell  pm  dump  com.tencent.mobileqq
  • pm  install  ,目标apk存放于Android设备上,用pm  install安装,若目标apk存放于PC端,则用adb  install安装
  • pm  uninstall  包名  , 卸载应用
  • pm  clear  , 清楚应用数据
  • pm  set-install-location  ,  pm  get-install-location  ,设置应用安装位置,获取应用安装位置                                                                                                                         
    •  [0/auto] : 默认为自动                                                                                                        
    • [1/internal] : 默认为安装在手机内部                                                                                
    • [2/external] : 默认安装在外部存储

am

  • am  start , 启动一个Activity                                                                                                   
    •  eg : adb  shell  am  start  -n  com.android.camera/.Camera    (启动相机)                      
    • 先停止目标应用,再启动: adb  shell am  start  -S  com.android.camera/.Camera        
    • 等待应用完成启动 : adb  shell  am  start  -W  com.android.camera/.Camera           
    • 启动默认浏览器打开一个网页: adb  shell  am  start  -a  android.intent.action.VIEW -d  http://testhome.com                                                                                       
    • 启动拨号器拨打10086 : adb  shell  am  start  -a  android.intent.action.CALL  -d  tel:10086
  • am  instrument  ,启动一个instrumentation,单元测试或者Robotium会用到
  • am  monitor  ,监控crash与ANR
  • am  force-stop  包名  , 结束应用
  • am  startservice  , 启动一个服务
  • am  broadcast  , 发送一个广播

input

这个命令可以向Android设备发送按键事件

  • input  text  , 可以发送文本内容,不能发送中文                                                                 
    • eg : adb  shell  input  text  test123456      前提先将键盘设置为英文键盘
  • input  keyevent   ,发送按键事件                                                                                           
    • eg : adb  shell  input  keyevent  KEYCODE_HOME   模拟按下home键
  • input  tap ,对屏幕发送一个触摸事件                                                                                    
    • eg  : adb  shell  input  tap   500   500
  • input  swipe  ,滑动事件                                                                                                        
    • eg :adb  shell  input  swipe  900  500  100  500   (从右往左滑动屏幕)                                 
    • adb  shell  input  swipe  500  500  501  501  2000   (版本不低于4.4,可以模拟长按事件,其实就是在小的距离内,在较长的持续时间内进行滑动,最后表现出来的结果就是长按动作)

screencap

  • adb  shell  screencap  -p  /sdcard/screen.png      截图,保存至sdcard目录

screenrecord

  • 4.4新增的录制命令     adb  shell  screenrecord  sdcard/record.mp4                                执行命令后操作手机,CTRL+C结束录制,录制结果保存至sdcard

uiautomator

  • 执行UI  automation  tests,获取当前界面的控件信息                                                       runtest : executes  UI  automation  tests  RunTestCommand.java                                 dump :获取控件信息,DumpCommand.java                                                                     
    • eg : adb  shell  uiautomator  dump     (不加[file]选项时,默认存放在sdcard下)

ime

  • 列出设备上的输入法    adb  shell  ime  list  -s
  • 选择输入法       adb  shell  ime  set  com.baidu.input_mi/.ImeService

wm

  • 获取设备分辨率      adb  shell  wm  size

getprop

  查看Android设备的参数信息,只运行adb  shell   getprop  ,  结果以key:value键值对的形式显示,如要获取某个key值:

       adb  shell  getprop  ro.build.version.sdk     (获取设备的sdk版本)

原文地址:https://www.cnblogs.com/siduoxiaohua/p/13136741.html