您的位置:首页 > 移动开发 > Android开发

Android开发中常用的Android Debug Bridge(ADB)指令

2017-03-14 00:19 603 查看
编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/61955221

1,通过无线连接或取消连接android设备

// 连接
adb connect 192.168.1.209
// 取消连接
adb disconnect 192.168.1.209




2,查看当前运行的android设备

adb devices




3,多个android设备连接,为命令指定目标设备

adb -s <serialNumber> 命令




4,杀死adb进程、开启adb进程(常用于AVD无法打印出Log情况)

//杀死adb进程
adb kill-server
//开启adb进程
adb start-server




5,文件复制

//电脑文件复制到手机
adb push d:\abd.txt /sdcard/
//手机文件复制到电脑
adb pull /sdcard/xyz.txt d:\




6,安装、卸载APK

//安装APK
adb install (-s 可选) 文件绝对路径
-s(设置软件安装在sd卡中,如不设置默认安装于内部存储器上)
-r(允许覆盖安装)
-l(将应用安装到保护目录 /mnt/asec)
-d(允许降级覆盖安装)
-g(授予所有运行时权限)
文件绝对路径(直接将apk文件拖过来即可显示绝对路径)

//卸载APK
adb uninstall (-k 可选) 文件绝对路径
-k(只删除应用程序,但保留应用程序的数据和缓存,如不设置则全部删除)
文件绝对路径(直接将apk文件拖过来即可显示绝对路径)


7,重启设备

adb reboot


8,打印系统日志(显示内容同AS的logcat内容)

adb logcat
// adb 过滤Log信息(MainActivity是TAG标识)
adb logcat -s MainActivity


9,获取或取消管理员权限

adb root
// 同
adb shellsu


  命令提示符变为#



  如果要取消管理员权限使用

adb unroot


  或exit退出一次也可



10,获取设备序列号

adb get-serialno




11,登录设备shell

adb shell


12,常用的adb shell命令

12.1 获取设备名称等信息

adb shell
// 设备信息主要是存放在"/system/build.prop"文件中,通过cat命令查看即可
cat /system/build.prop




12.2 获取设备IP地址

   查看条件:android设备已经连接到Wifi获取到Ip地址并且android设备已经连接到电脑,通过adb devices可以查看到该设备

// 进入shell模式
adb shell
// 查看所有的网络端口情况
netcfg
// 进这个端口详细看一看
ifconfig wlan0




   或者:

adb shell"ifconfig | grep Mask"




12.3 获取设备MAC地址

// Wifi的Mac地址 7.0手机出现:/system/bin/sh: cat: /sys/class/net/wlan0/address: Permission denied 不晓得么鬼
adb shellcat /sys/class/net/wlan0/address
// 如果设备有网口 可以获取到EthernetMac地址
adb shellcat /sys/class/net/eth0/address


12.4 获取设备CPU序列号

adb shellcat /proc/cpuinfo




12.5 查看CPU和内存占用情况

adb shelltop


12.6 查看一次CPU和内存占用情况

adb shelltop -n 1


12.7 查看CPU占用前六的进程

adb shelltop -m 6




12.8 查看所有应用列表

adb shellpm list packages
-f(显示应用关联的 apk 文件)
-d(只显示 disabled 的应用)
-e(只显示 enabled 的应用)
-s(只显示系统应用)
-3(只显示第三方应用)
-i(显示应用的 installer)
-u(包含已卸载应用)
关键字(查找包含关键字的应用)
无(所有应用)




adb shellpm list packages 关键字
// 同
adb shell"pm list packages | grep 关键字"




12.9 清除数据及缓存

// 效果相当于在设置里的应用信息界面点击了清除缓存和清除数据
adb shellpm clear 包名




12.10 查看前台Activity

adb shell"dumpsys activity activities | grep mFocusedActivity"




12.11 启动应用

adb shellam start -n 包名/类名(不是包名或类名而是包名+类名的意思)
// 打开系统计算器应用
adb shellam start -n com.android.calculator2/com.android.calculator2.Calculator




12.12 启动服务

adb shellam startservice -n 包名/服务名(不是包名或服务名而是包名+服务名的意思)


   打开微信的某 Service



12.13 发送广播

  可以向所有组件广播,也可以向指定组件广播

// 设备启动完毕,向所有组件广播
adb shellam broadcast -a android.intent.action.BOOT_COMPLETED
// 设备启动完毕,向指定的包名/广播接收者(不是包名或广播接收者而是包名+广播接收者的意思)
adb shellam broadcast -a android.intent.action.BOOT_COMPLETED -n com.abc.test/.BootCompletedReceiver


  可以通过adb触发的广播:

  android.net.conn.CONNECTIVITY_CHANGE 网络连接发生变化

  android.intent.action.SCREEN_ON 屏幕点亮

  android.intent.action.SCREEN_OFF 屏幕熄灭

  android.intent.action.BATTERY_LOW 电量低,会弹出电量低提示框

  android.intent.action.BATTERY_OKAY 电量恢复了

  android.intent.action.BOOT_COMPLETED 设备启动完毕

  android.intent.action.DEVICE_STORAGE_LOW 存储空间过低

  android.intent.action.DEVICE_STORAGE_OK 存储空间恢复

  android.intent.action.PACKAGE_ADDED 安装了新的应用

  android.net.wifi.STATE_CHANGE WiFi 连接状态发生变化

  android.net.wifi.WIFI_STATE_CHANGED WiFi 状态变为启用/关闭/正在启动/正在关闭/未知

  android.intent.action.BATTERY_CHANGED 电池电量发生变化

  android.intent.action.INPUT_METHOD_CHANGED 系统输入法发生变化

  android.intent.action.ACTION_POWER_CONNECTED 外部电源连接

  android.intent.action.ACTION_POWER_DISCONNECTED 外部电源断开连接

  android.intent.action.DREAMING_STARTED 系统开始休眠

  android.intent.action.DREAMING_STOPPED 系统停止休眠

  android.intent.action.WALLPAPER_CHANGED 壁纸发生变化

  android.intent.action.HEADSET_PLUG 插入耳机

  android.intent.action.MEDIA_UNMOUNTED 卸载外部介质

  android.intent.action.MEDIA_MOUNTED 挂载外部介质

  android.os.action.POWER_SAVE_MODE_CHANGED 省电模式开启

12.14 强制停止应用

adb shellam force-stop 包名
// 强制停止日历应用
adb shellam force-stop com.android.calculator2




12.15 模拟按键/输入

  在 adb shell里有个很实用的命令叫 input,通过它可以做一些有趣的事情。

  input 命令的完整 help 信息如下:



  keycode 列表详见:欧阳鹏 我的Android进阶之旅——>Android KeyCode列表

// 模拟点击菜单键
adb shellinput keyevent 82
// 模拟点击返回键
adb shellinput keyevent 4
// 熄灭屏幕
adb shellinput keyevent 223
// 熄灭屏幕
adb shellinput keyevent 223


12.16 滑动解锁

  如果手机解锁设置的为滑动解锁,可以通过input swipe 来解锁

// 参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标
adb shellinput swipe 300 1000 300 500


12.17 输入文本

  焦点处于文本框时,可以通过input命令来输入文本

adb shellinput text test12345


12.18 查看设备型号

adb shellgetprop ro.product.model




12.19 查看电池状况

adb shelldumpsys battery




12.20 查看屏幕理论分辨率

adb shellwm size




  用上面的方法测试手机的分辨率为1920*1080,但手机底部是有虚拟按键的,分辨率肯定有些偏差



  获取屏幕实际分辨率的代码请移步: Android开发中的一些小知识点记录(21-40) 第36点 ,获取的我手机的分辨率为1812*1080

12.21 查看屏幕密度

adb shellwm density




12.22 查看显示屏参数(包括屏幕分辨率,屏幕密度等信息)

adb shelldumpsys window displays




12.23 查看设备Id

adb shellsettings get secure android_id




12.24 国际移动设备身份码IMEI

  android4.4及以下版本获取IMEI:

adb shelldumpsys iphonesubinfo


  android5.0及以上版本获取IMEI:

adb shellservice call iphonesubinfo 1




  把里面的有效内容提取出来就是 IMEI 了,比如这里的是 863272036345313

12.25 Android系统版本

adb shellgetprop ro.build.version.release




12.26 其他更多硬件属性

  一些其它有用的信息,它们也可通过 adb shellgetprop <属性名> 命令单独查看,列举一部分属性如下:

  属性名             含义

ro.build.version.sdk       SDK 版本

ro.build.version.release      Android 系统版本

ro.build.version.security_patch  Android 安全补丁程序级别

ro.product.model        型号

ro.product.brand         品牌

ro.product.name         设备名

ro.product.board        处理器型号

ro.product.cpu.abilist      CPU 支持的 abi 列表

persist.sys.isUsbOtgEnabled   是否支持 OTG

dalvik.vm.heapsize        每个应用程序的内存上限

ro.sf.lcd_density         屏幕密度

12.27 设置屏幕分辨率

// 设置屏幕分辨率为480x1024
adb shellwm size 480x1024
// 还原分辨率设置
adb shellwm size reset


12.28 设置屏幕密度

// 将屏幕密度修改为160dpi
adb shellwm density 160
// 还原屏幕密度
adb shellwm density reset


12.29 设置屏幕留白区域

// 分别表示距离左、上、右、下边缘的留白像素
// 下边缘留白200px
adb shellwm overscan 0,0,0,200
// 还原屏幕留白设置
adb shellwm overscan reset


12.30 关闭USB调试模式

adb shellsettings put global adb_enabled 0
// 恢复需要手动恢复:设置--->开发者选项--->Android 调试


12.31 实现屏幕截屏

  方式一:

// 手机上截屏并保存在电脑D盘的develop文件夹下,以sc.png命名
// -p 表示指定保存文件为 png 格式
adb exec-out screencap -p > D:\develop\sc.png


  若方式一无法获取,则采用方式二:

// 手机上截屏并保存在安卓设备根目录下,以sc1.png命名
// -p 表示指定保存文件为 png 格式
adb shellscreencap -p /sdcard/sc1.png
// 将根目录下的sc1.png文件保存在D盘的develop文件夹下
adb pull /sdcard/sc1.png D:\develop


12.32 实现屏幕录屏

// 录屏保存至内存卡,以filename.mp4命名
adb shellscreenrecord /sdcard/filename.mp4
// ctrl+c 停止录制,默认录制时间和最长录制时间都是 180 秒
// 将录屏文件filename.mp4 复制到D盘的develop文件夹下
adb pull /sdcard/filename.mp4 d:\develop\




  adb shellscreenrecord - -help 查看 screenrecord 命令的帮助信息

  - -size WIDTHxHEIGHT(视频的尺寸,比如 1280x720,默认是屏幕分辨率)

  - -bit-rate RATE(视频的比特率,默认是 4Mbps)

  - -time-limit TIME(录制时长,单位秒)

  - -verbose(输出更多信息)



12.33 查看连接过的WIFI密码(需要Root权限)

// 获取Root权限
adb shellsu
// 查看保存WIFI密码的文件
cat /data/misc/wifi/*.conf




  ssid 即为我们在 WLAN 设置里看到的名称,psk 为密码,key_mgmt 为安全加密方式。

12.34 测试设备是否Root

adb shellsu


  如果已经获取Root权限:



  如果没有获取Root权限:



12.35 Monkey测试

// 向 <packagename> 指定的应用程序发送 500 个伪随机事件
adb shellmonkey -p <packagename> -v 500


13,adb shell后需要使用到的Linux命令

13.1 进入或返回

// 进入系统内指定文件夹
$ cd system/sd/data
// 返回上一级目录
$ cd ..
// 返回上两级目录
$ cd ../..


13.2 查看文件及文件夹

// 查看当前目录下非隐藏文件和目录名称
$ ls




// 查看当前目录下非隐藏文件和目录的详细信息,如创建者,创建时间,文件的读写权限列表等等
$ ll或ls -1




  文件属性以d开头表示,目录(文件夹)

  以-开头表示,文件

  以l开头表示,链接(快捷方式)

  以c开头表示,字符设备文件(键鼠)

  以b开头表示,块设备(硬盘)

13.3 查看文件内容

// 查看文件中的内容
$ cat + 文件名


14,其他Windows控制台命令

// 清屏
cls
// 退出(控制台或当前shell)
exit
// 终止(当前shell的不间断操作)
ctrl+c


——博客参考自:https://github.com/mzlogin/awesome-adb?spm=5176.100239.blogcont61659.4.J0Ks5F——

———-因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息