最好的ADB教程,从下载安装到使用的详细说明,从小白到工作【win+ linux】

在这里插入图片描述

Best ADB Tutorials


   由于在工作中常用到的ADB命令,在此总结,基本是很全乎了,以供后续查阅,也欢迎大家补充!

一、什么是ADB

   ADB的全称为Android Debug Bridge,安卓调试桥。
   ADB是安卓设备和电脑之间的中间件,是官方提供的用于操作安卓设备的工具

二、ADB用来干什么?


   ADB的使用场景不仅仅局限于安卓手机,安卓平板、部分游戏手柄、安卓vr、车载相关的安卓设备均可使用。

  • 在PC终端进入安卓设备shell,通过命令行操作安卓设备;
  • pc和安卓安卓设备之间传输文件;
  • 打开、关闭安卓设备或其应用;
  • 模拟点击、输入、滑动等操作;
  • 输出设备信息、性能指标信息

三、ADB工作原理:

   ADB采用客户端-服务器模式(C/S模式),分为:

PC:
客户端:client
服务器:server

MACHINE:(安卓设备)
守护进程:daemon

流程:服务器监听5037端口,接受客户端发来的指令发送给移动设备端adbd。

常用端口:5555端口和移动端建立连接(无线调试默认端口),5554则是和控制台建连接。

四、ADB下载安装:

   最新版本的ADB下载(包含多系统版本) :入口

linux 下载

在线安装: sudo apt-get install android-tools-adb

离线安装:参考这里

windows配置ADB环境:


+ 打开控制面板 >系统和安全>系统>高级系统设置
+ 在系统变量中新建ANDROID_HOME变量,赋值路径(platform-tools的上一级目录。例如:C:\Users\SweetOrange\AppData\Local\Android\Sdk\)
+ 在系统变量path中添加%ANDROID_HOME%\platform-tools
+ cmd进入终端

安装配置部分也可以参考这篇博客:入口

检查 ADB 是否安装成功:

执行 adb --version 是否有adb 版本显示

在这里插入图片描述
执行结果类似就说明安装成功

五、连接移动设备以及查看设备连接状态

   本文以Windows + 一加ACE 3 安卓手机真机为例说明,下同。

ADB真机USB连接调试使用前提:

  • ADB调试手机需要先设置手机开发者模式:一般步骤是在设置中找到关于本机,安卓版本号点击5次,依照提示打开即可

  • 打开调试模式:在手机提示进入开发者模式后,设置中搜索开发者模式,下滑找到USB调试模式打开,过程中按提示进行设置即可
    在这里插入图片描述
    第一次设置一般会有以下弹窗:
    在这里插入图片描述

  • 插入USB数据线,USB调试弹出的USB配置窗口建议选择文件传输 ,下面为弹出的选项图示,选择传输文件以后界面消失

在这里插入图片描述

  • PC端安装手机驱动,弹出是否允许调试点击是

  • 特殊命令还需要打开其他开关,例如无线调试的时候需要提前打开无线调试开关

检查 ADB 是否连接成功:

执行 adb shell 是否进入安卓设备shell
, 正常情况下可以进入到安卓设备的内环境使用命令行进行操作

在这里插入图片描述
执行结果类似就说明安装成功

无线调试连接方法:


   最终实现无线连接必须以安卓设备和PC已经连接同一个无线网络为前提。
  • 借助USB数据线(常用机型任意安卓版本):

    • 先连接USB数据线打开usb调试,如有弹窗选择文件传输
    • 执然后行 adb tcpip [设置一个四位端口号],默认 :5555
    • 再执行adb connect [手机ip]:[端口号]即可

    adb tcpip [设置一个端口号] 是在手机上开辟一个新的端口,用于监听,

    然后当PC端执行adb connect [手机ip]:[端口号]时,将会通过设置的连接手机端口和无线网进行连接;

  • 无需USB数据线(安卓11及以上): adb pair [IP]:[port]

    这里的端口和IP都是在手机上显示的,需要在安卓手机设置中打开无线调试

从无线模式重新连接到USB命令:adb usb

在linux下能用的命令,在此基本都能用!

在win没有grep命令,但是可以使用findstr替换。

ps: 如果是华为、荣耀手机,还需要打开“仅充电”模式下允许Usb调试,否则拔线状态就会变成offline.

六、adb命令格式:

   adb [-d | -e | -s <serialNumber>] <command>

一台设备不需要以下命令,默认会操作已连接的设备:-d 指定当前唯一通过USB连接安卓设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s [device名字 ]指定相应的设备为命令目标

以上[ ] 内为可选,如果只有一个模拟器在运行或者只连接了一个设备,系统会默认将 adb 命令发送至该设备

Ps: adb shell [其他命令]   直接执行这样的长命令 == 先执行 adb shell,再执行括号内的其他命令;这两个效果是一样的

Eg:adb shell ls -a等于先执行adb shell,再执行ls -a

七、应用安装\卸载:

安装:

   安装包应用需要提前有安装包(手机端或者PC端),且知道包名。
安装包在PC端:

普通安装: adb install <apk路径> //原来安卓设备中没有安装该应用

覆盖安装: adb install -r <apk路径> //安卓设备中已经安装该应用,使用这个安装包覆盖之前版本

授权安装: adb install -g <apk路径> //授予安装软件运行中的所有权限,不必在软件运行用到权限时一一来授权所需权限

安装成功会返回成功提示: “Success”;

卸载:

adb unstall 包名

卸载但是保留数据缓存: adb uninstal - k < 包名>

安装包在安卓端: adb shell pm install [路径][ **.apk]

当然也可以先推进到安卓设备再安装: adb push [**.apk] [路径] && adb shell pm install [路径][ **.apk]

八、adb启动页面:


adb start am -n [包名 + 页面名]

获取当前页面名: adb shell "dumpsys windows |grep mCurrentFocus"

package包: android应用唯一的标识

Activity:应用页面,一个页面就是一个activity

监控手机运行的软件,显示包名: adb shell am monitor

adb打开页面 : adb logcat ActivityManager:I | findstr "cmp"

九、adb 其他命令:


activity manger:am

package manger:pm

获取设备序列号,手机序列号是由于15位数字组成的,又叫做IMEI编码,可以理解为手机的ID,每个手机都有自己独一无二的序列号。可以用作和其他手机区分:

adb shell getprop ro.serialno    
adb get-serialno 
adb devices

在这里插入图片描述

获取更加详细的设备信息,含序列号、型号等:adb devices -l
在这里插入图片描述

获取型号: adb -d shell getprop ro.product.model
在这里插入图片描述

获取厂商: adb -d shell getprop ro.product.brand
在这里插入图片描述

获取连接状态: adb get-state
在这里插入图片描述

结果含义:

device:设备正常连接  
offline:连接出现异常,设备无响应
error: no devices/emulators found、unknown-没有连接设备 

获取运营商: adb shell getprop gsm.sim.operator.alpha
在这里插入图片描述
获取手机序列号:

adb shell service call iphonesubinfo 1 //获取字符串需要处理

adb shell getprop ro.ril.oem.imei //直接获取imei字符串,不需要处理

查看当前日期: adb shell date

查看目录结构: adb shell ls

查看当前CPU使用情况: adb shell cat/proc/cpuinfo

查看当前内存使用情况: adb shell cat/proc/meminfo

查看安卓设备应用

adb shell pm  list packages  
adb shell pm  list packages -s           //列举系统应用 -s:system
adb shell pm  list packages -3           //列举第三方应用
adb shell pm  list packages -f           //还能显示出路径
adb shell pm list packages  [tencent]    //查看腾讯系软件包(包名带有tencent的)

借助强大的dump工具, 可以获取很多系统相关信息

查看安卓设备硬盘存储空间以及各应用使用存储空间情况: adb shell dumpsys diskstats //剥离应用名字、应用数据大小、应用缓存等信息Cpp代码。

查看安卓设备状态: adb shell dumpstate

清除应用数据: adb shell pm clear[包名]

进入应用缓存数据位置: cd /data/data/[包名]

截屏并存到/sdcard/: adb shell screencap /sdcard/screen.png

录屏并存到/sdcard/: adb shell screenrecord /sdcard/demo.mp4

十、安卓设备和PC传输文件(非常实用,很快)


adb push PC路径 安卓设备路径

adb pull 安卓设备路径 PC路径

十一、adb查看安卓设备日志: adb logcat


| | | |--|--| |日志的级别: | V-明细verbose(最低优先级) | | |D―调试debug | | |l一信息info | | |W-警告warn | | |E一错误error | | |F一严重错误fatal | | |S-无记载silent(最高优先级,绝不会输出任何内容) |

adb查看安卓设备日志:adb logcat

后缀分析:

    -v color 使用不同颜色来显示每个优先级

     -f [安卓设备端的文件名] 将日志输出到文件名中,保存到PC端

将日志存放到PC端: adb logcat> pc端文件路径

依据条件过滤日志:

查看日志帮助命令:adb logcat --help
adb logcat -v time "*:
adb logcat ActivityManger:D '*:

如果设置的过滤条件为日志级别的话,将会过滤出该等级以及该等级以上等级的日志:
adb logcat "*:W" 过滤日志级别为W以及已上的日志

十二、模拟按键操作:


1、模拟按键: adb shell input keyevent [命令] // 括号内一般为数字,不同数字代表不同操作

2、模拟输入: adb shell input text [文本](仅支持英文,不支持中文和一些符号)

3、模拟页面的滑动事件:adb shell swipe (x1,y1)(x2,y2)

    后面可以加时间,单位:毫秒

4、模拟返回: adb shell input keyevent 4

    模拟返回主页: adb shell input keyevent 3

5、模拟拨号:

   按好号码但是不拨出: adb shell service call phone 1 s16 [ 号码 ]

   按好号码直接拨出: adb shell am start -a android.intent.action.CALL -d tel:[ 号码 ] // 如果安卓设备是双卡则需要选择拨出卡号

6、模拟点击(x,y)处: adb shell input tap (x,y)

    左上角为 0 0,右下角则较为大的值(不同安卓设备不同) v

7、搜狗语音输入: adb shell input tap 656 1513 (误打误撞碰见的)

8、模拟长按开机键重启安卓设备: adb reboot

9、模拟开启无线网: adb shell svc wifi enable

     模拟关闭无线网: adb shell svc wifi disable

10、启用移动数据: adb shell svc data enable

     禁用移动数据: adb shell svc data disable

十三、ADB 获取手机的性能指标:

查看当前CPU使用情况: adb shell dumpsys cpuinfo(均值)

查看当前系统内存使用情况: adb shell dumpsys meminfo

查看某个应用内存使用情况: adb shell dumpsys meminfo [应用包名] PS:如何获取参照前节

同linux:top和ps作用是相同的,top是实时动态刷新的

实时查看进程信息(进程号等,和linux是一样的): adb shell top (实时) adb shell ps -ef

linux某个进程信息: adb shell top |grep [包名]

windows查看进程信息: adb shell top | findstr [包名]

top 后面可以加参数-d 1 表示每一秒打印一次

电池信息: adb shell dumpsys battery

将电池信息保存到XXX.txt中去: adb shell dumpsys batterystats > xxx.txt //

无线网ip: adb shell ip addr show wlan0 | grep -oE 'inet ([0-9]{1,3}.{3})([0-9]{1,3})' |grep -oE '([0-9]{1,3}.{3})([0-9]{1,3})'
查看本机热点Ip: adb shell ip addr ap0

性能相关的具体用法:[官网](https : / /developer.android.com/ docs )

注意:[ ]不必在命令行中出现,直接写里面的东西即可

十四、从内容解析器读取值,可以通过其 uri 访问它

例如:可以使用 uri 获取短信:

adb shell content query --uri content://sms --projection _id,address,body,read,date,type

在终端中执行这个命令,你会得到这样的结果

行:0 _id=2,地址=5554,正文=测试,读取=1,日期=1469533087074,类型=2  <br>

行:1 _id=1, address=5554, body=Hi, read=1, date=1469533011944, type=2  <br>

例如:可以使用特定的 uri 获取特定的短信

content://sms/inbox 
content://sms/sent
adb shell content query --uri content://sms/sent --projection _id,address,body,read,date,type
adb shell content query --uri content://mms/inbox  --projection _id,address,body,read,date,type

获取通话记录:adb shell content query --uri content://call_log/calls

十五、常见问题自查、解决方式:


1、查看ADB 版本,版本过低的话及时升级版本
2、查看安卓设备接和PC接口处是否连接好
3、环境变量是否设置好
4、手机开发者模式和USB调试开关是否正确打开?
5、重新开启 :

杀掉adb : adb kill-server
重启adb : adb start-server

  • 一般至此就不会有问题了

十六、其他的安装、学习资料文档

[ADB远比我想象中的更好用!!!]

  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
android adb shell 命令大全 1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): android create avd --name 名称 --target 平台编号 4. 启动模拟器: emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800) 5. 删除AVD(模拟器): android delete avd --name 名称 6. 创建SDCard: mksdcard 1024M ~/名称.img 7. AVD(模拟器)所在位置: Linux(~/.android/avd) Windows(C:\Documents and Settings\Administrator\.android\avd) 8. 启动DDMS: ddms 9. 显示当前运行的全部模拟器: adb devices 10. 对某一模拟器执行命令: abd -s 模拟器编号 命令 11. 安装应用程序: adb install -r 应用程序.apk 12. 获取模拟器中的文件: adb pull 13. 向模拟器中写文件: adb push 14. 进入模拟器的shell模式: adb shell 15. 启动SDK,文档,实例下载管理器: android 16. 缷载apk包: adb shell cd data/app rm apk包 exit adb uninstall apk包的主包名 adb install -r apk包 17. 查看adb命令帮助信息: adb help 18. 在命令行中查看LOG信息: adb logcat -s 标签名 19. adb shell后面跟的命令主要来自: 源码\system\core\toolbox目录和源码\frameworks\base\cmds目录。 20. 删除系统应用: adb remount (重新挂载系统分区,使系统分区重新可写)。 adb shell cd system/app rm *.apk 21. 获取管理员权限: adb root 22. 启动Activity: adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。 23、发布端口: 你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如: adb forward tcp:5555 tcp:8000 24、复制文件: 你可向一个设备或从一个设备中复制文件, 复制一个文件或目录到设备或模拟器上: adb push 如:adb push test.txt /tmp/test.txt 从设备或模拟器上复制一个文件或目录: adb pull 如:adb pull /addroid/lib/libwebcore.so . 25、搜索模拟器/设备的实例: 取得当前运行的模拟器/设备的实例的列表及每个实例的状态: adb devices 26、查看bug报告: adb bugreport 27、记录无线通讯日志: 一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录: adb shell logcat -b radio 28、获取设备的ID和序列号: adb get-product adb get-serialno 29、访问数据库SQLite3 adb shell sqlite3 #cd system/sd/data //进入系统内指定文件夹 #ls //列表显示当前文件夹内容 #rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件 #rm xxx //删除文件xxx #rmdir xxx //删除xxx的文件夹

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甜橙の学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值