草庐IT

adb常用命令

搬码人 2023-03-28 原文

引言

本文为小编学习总结的一些adb的常用命令,可能一些命令有待验证,更多内容可以参考adb用法大全

基本用法

语法命令

adb 命令的基本语法如下:
adb [ -d| -e| -s <sericalNumber>] <command>
如果只有一个设备/模拟器连接时,可以省略掉[ -d| -e| -s] <sericalNumber>] 这一部分,直接使用adb <command>。

为命令指定目标设备

如果有多个设备/模拟器,则需要为命令指定目标设备

参数 含义
-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e 指定当前唯一运行的模拟器为目标命令
-s<serialNumber> 指定相应 serialNumber 号的设备/模拟器为命令目标

常用版

查看adb版本号

adb version

查看已连接设备

adb devices

查看手机序列号

adb get-serialno
如返回127.0.0.1:7555

查看日志

adb logcat

adb logcat -c 清除日志
adb logcat | grep "tag" 过滤日志 这里的tag就是你打印日志的时候需要设置的第一个参数TAG,通过TAG我们可以很轻松的过滤出我们想要的日志,轻松高效。

安装apk

adb install [apk文件的路径]

adb install douyin.apk

  • 多个设备安装apk
    adb -s [设备号] install [apk文件的路径]

adb -s 127.0.0.1:7555 install douyin.apk

  • 如果apk已经存在,需要覆盖安装
  • adb install -r [apk文件的路径]

adb install -r douyin.apk

adb install后面可以跟一些可选参数来控制安装APK的行为,可选参数及含义如下

参数 含义
-l 将应用安装到保护目录 /mnt/asec
-r 允许覆盖安装
-t 允许安装AndroidMainfest.xml里application指定android:testOnly="true"的应用
-s 应用安装到sdcard
-d 允许降级覆盖安装
-g 授予所有运行时权限
--abi abi-identifier 为特定ABI强制安装apk,abi-identifier可以是armeabi-v7a、arm64-v8a、v86、x86_64 等

卸载apk

  • 普通卸载
  • adb uninstall [apk文件的路径]

adb uninstall douyin.apk

  • 卸载但是保留数据
  • adb uninstall -k [apk文件的路径]

adb uninstall -k douyin.apk

以root权限运行adbd

adb的运行原理是PC端的adb server 与手机端的守护进程adbd 建立连接,然后PC端的adb client通过adb server转发命令,adbd接收命令后解析运行。
所以如果adbd以普通权限执行,有些需要root权限才能执行的命令无法直接用adb xxx执行。这时可以adb shell 然后 su后执行命令,也可以让adbd以root权限执行,这个就能随意执行高权限命令了。

adb root
正常输出:restarting adbd as root
现在再运行 adb shell,看看命令行提示符是不是变成 # 了?
有些手机 root 后也无法通过 adb root 命令让 adbd 以 root 权限执行,比如三星的部分机型,会提示 adbd cannot run as root in production builds,此时可以先安装 adbd Insecure,然后 adb root 试试。
相应地,如果要恢复 adbd 为非 root 权限的话,可以使用 adb unroot 命令。

连接不稳定时需要挂载

adb remount

重启手机

  • 正常重启
    adb reboot
  • 重启手机到recovery
    adb reboot recovery
  • 重启到bootloader界面
    adb reboot bootloader

通过slideload更新系统

如果我们下载了Android设备对应的系统更新包到电脑上,那么可以通过adb来完成更新 。
以Recovery模式下更新为例:
1.重启到Recovery模式。
命令:

adb reboot recovery

2.在设备的Recovery界面上操作进入Apply update-Apply from ADB
注:不同的 Recovery 菜单可能与此有差异,有的是一级菜单就有 Apply update from ADB
3.通过adb上传和更新系统。
命令:

adb sideload <path-to-update.zip>

关闭adb服务

adb kill -server

启动adb服务

adb start -server

查看手机设备型号

adb shell getprop ro.product.model
如返回MI 8

查看设备的Android版本

adb shell getprop ro.build.version.release

获取手机厂商名称

adb shell getprop ro.product.brand
如返回Xiaomi

获取手机SDK版本

adb shell getprop ro.build.version.sdk

查看手机分辨率

adb shell wm size

查看屏幕密度

adb shell wm density
修改屏幕密度
adb shell wm density 160
恢复原屏幕密度
adb shell wm density reset

查看手机的mac地址

adb shell cat /sys/class/net/wlan0/address

查看电池信息

adb shell dumpsys battery

查看进程

adb shell ps

查看CPU使用情况

adb shell top

CPU信息

adb shell cat /proc/cpuinfo

内存信息

adb shell cat /proc/meminfo

查看应用的安装路径

adb shell pm path <packagename>

我手机QQ的安装路径


image.png

查看手机上所有安装的app包名

adb shell pm list packages

adb shell pm list packages -s 查看所有系统app的包名
adb shell pm list packages -3 查看所有第三方app的包名
adb shell pm list packages | grep [包名] 使用grep筛选所有满足要求的app包名

参数 显示列表
所有应用
-f 显示应用关联的apk文件
-d 只显示disabled的应用
-e 只显示enabled的应用
-s 只显示系统应用
-3 只显示第三方应用
-i 显示应用的installer
-u 包含已卸载应用
<FILTER> 包名包含<FILTER> 字符串

查看应用详细信息

adb shell dumpsys package <packagename>

清除应用数据

adb shell pm clear <packagename>

当你只是想要清除一个apk的某些数据来复现某些操作的时候,这个命令就显得额外重要。它可以避免我们重装apk来完成这个操作。

获取某个应用包名的启动入口

  • adb shell dumpsys package com.ss.android.ugc.aweme|findstr activity
  • com.ss.android.ugc.aweme/com.ss.android.sdk.activity.BootstrapActivity 这个就是抖音的入口

adb shell dumpsys package com.ss.android29111 com.ss.android.ugc.aweme/com.ss.android.sdk.activity.BootstrapActivity

屏幕截屏

adb shell screencap [保存路径]

adb shell screencap /sdcard/screen.png

也可以使用(adb版本太老的话,需要更新adb)

adb exec-out screencap  > sc.png

录制视频

adb shell screenrecord [保存路径]

上传文件到手机

adb push [电脑文件路径] [手机文件保存路径]

adb push douyin.apk sdcard/douyin.apk

从手机端下载文件

adb pull [手机上文件路径]
注意:此时没有指定上传到电脑的路径,会默认上传到adb程序所在的路径

adb pull sdcard/douyin.apk

指定上传路径:adb pull [手机上文件的路径] [电脑文件的路径]

adb pull /storage/emulated/0/app/txt.mp4 D:/ADB/tet.mp4

模拟屏幕点击事件

adb shell input tap x坐标轴 y坐标轴

adb shell input tap 500 1450

模拟手势滑动事件

adb shell input swipe 开始x轴 开始y轴 结束x轴 结束y轴 过程持续时间

adb shell input swipe 100 500 100 1450 100

模拟点击键盘按钮

adb shell input keyevent [key值]

adb shell input keyevent 25

一些常用的keyevent键值信息

keyevent 效果
3 Home键
4 返回键
5 拨号键
6 挂机键
19 向上
20 向下
21 向左
22 向右
24 音量加
25 音量减
26 电源
27 拍照(需要在相机应用里)
64 打开浏览器
66 回车键
67 退格键
82 菜单键
84 搜索键
85 播放/暂停键
86 停止播放
87 播放上一首
88 播放下一首
92 向上翻页
93 向下翻页
112 删除键
115 大写锁定键
122 光标移动到开始键
123 光标移动到末尾键
164 静音
168 放大键
169 缩小键
176 打开系统设置
187 切换应用
220 降低屏幕亮度
221 提高屏幕亮度
223 系统休眠
224 点亮屏幕
231 打开语音助手

向屏幕输入一些信息

  • db shell input text [字符串信息]
  • %s是空格

db shell input text "insert%stext%shere"

查看前台Activity

同时小编也是通过这种方式获取到应用包的入口
adb shell dumpsys activity activities | findstr mResumedActivity
获取到了QQ的启动入口


image.png

查看正在运行的Services

adb shell dumpsys activity services [<packagename>]

<packagename> 参数不是必须的,指定 <packagename>表示查看与某个包名相关的 Services,不指定表示查看所有 Services。
<packagename> 不一定要给出完整的包名,比如运行 adb shell dumpsys activity services org.example,那么包名 org.example.demo1、org.example.demo2org.example123 等相关的 Services 都会列出来。

启动某个app

adb shell am start -n [包名]/[启动入口]

adb shel am start -n com.ss.android.ugc.aweme/com.ss.android.sdk.activity.BootstrapActivity
Strating:Intent{cmp=com.ss.android.ugc.aweme/com.ss.android.sdk.activity.BootstrapActivity}

启动qq

adb shell am start -n com.tencent.mobileqq/.activity.SplashActivity

启动有道词典


image.png

发送广播

adb shell am broadcast -a "broadcastactionfilter"

adb shell am broadcast -a "broadcastactionfilter"

使用自带浏览器打开网页

adb shell am start -a [浏览器包名] -d [网址]

adb shell am start -a "android.intent.action.VIEW" -d https://www.google.com

获取手机内部存储信息

adb shell df /data

无线连接(需要借助USB连接线)

除了可以通过USB连接设备与电脑来使用adb,也可以通过无线连接——虽然连接过程中也有需要USB的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱USB连接线的束缚了!

操作步骤

1.将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。
2.将设备与电脑通过 USB 线连接。
应确保连接成功(可运行 adb devices 看是否能列出该设备)。
3.让设备在 5555 端口监听 TCP/IP 连接:

adb tcpip 5555

4.断开 USB 连接。
5.找到设备的 IP 地址。

一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里 查看设备信息 - IP 地址 一节里的方法用 adb 命令来查看。
6.通过 IP 地址连接设备。

adb connect <device-ip-address>

device-ip-address>你设备的ip地址
7.确认连接状态

adb devices

如果能看到

<device-ip-address>:5555 device

说明连接成功
如果连接不了,请确认 Android 设备与电脑是连接到了同一个 WiFi,然后再次执行 adb connect <device-ip-address> 那一步;
如果还是不行的话,通过 adb kill-server 重新启动 adb 然后从头再来一次试试。

断开无线连接

adb disconnect <device-ip-address>

关于ADB IDEA

AS插件ADB IDEA,装了这款插件可以直接在AS中快速操作一些ADB命令

使用方式

1、双击shift -> 点击action ->搜索adb


image.png

2、Ctrl + Shift + A,快捷键直接调用


image.png

一些琐碎小问题

不知应用包的入口Activity如何启动应用包

1.通过category

adb shell monkey -p <packagename> -c android.intent.category.LAUNCHER 1

adb获取应用包入口的方案

adb shell input text无法响应中文输入的问题

adb shell input text不能输入中文的解决方案

adb部分总结

adb部分总结

有关adb常用命令的更多相关文章

  1. 华为常用命令 - 2

    system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100

  2. git常用命令 - 2

    gitclonehttp:www.git.com.cn........ 克隆git项目gitbranch 查看分支gitbranch-r查看远程分支gitpushorigin--delete分支名 删除远程分支tmpgitcheckout切换分支gitcheckout-b切换并创建分支gitcheckout-b分支名origin/分支名(如果远程分支已存在最好用此命令,在创建分支时会把远程分支最新代码一并拉下来,不会把原分支代码带过来)gitbranch-D删除分支gitpushorigin--delete分支名gitpush--set-upstreamorigin分支名 推送本地分支到远端g

  3. android adb 命令汇总 - 2

    一.adb常用命令adbversion--查看adb版本adbdevices–用来查看当前连接的设备,已连接的设备会显示出来adbconnectip地址–用来连接设备adbdisconnectip地址--断开设备adbkill-server/start-server–终止adb服务/启动adb服务logcat--查看日志adblogcat-vtime*:W|greppid>/data/data/log.txtadbpull/data/data/log.txtd:/log/adbshell"logcat-vtime*:W|greppid">d:/log/log.txtadblogcat-c日志的

  4. Git的常用命令介绍 - 2

    Git整体工作流程:Workspace:工作区Index/Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、版本仓库: 1.通过命令gitinit把这个目录变成git可以管理的仓库(这就欧科啦)(会生成.git文件)默认.git文件不显示2.gitadd xxxxx (将工作区的指定文件添加到暂存区中)              没有任何提示,说明已经添加成功了3.gitcommit-m ‘一些提交注释’(把文件提交到本地仓库)4.gitstatus (查看是否有文件没有被提交)     展示说明没有任何文件未提交,但是我现在继续来改下readme.txt内

  5. FFmpeg常用命令汇总 - 2

    FFmpeg的命令繁多,为了方便查询,在此作一个汇总可参考:https://ffmpeg.org/ffmpeg.html#Options目录一、命令基本格式及参数二、基本信息查询命令三、分解、复用四、处理原始数据五、滤镜六、拼接与裁剪七、直播八、ffplay九、其它一、命令基本格式及参数ffmpeg[global_options]{[input_file_options]-iinput_url}... {[output_file_options]output_url}...一些参数:参数说明-ffmt(输入/输出)强制输入或输出文件格式-y(全局参数)覆盖输出文件而不询问-n(全局参

  6. android - 在 Windows 中从 Jenkins 启动 android 模拟器 adb(运行仪器测试,模拟器不会出现) - 2

    我想从Jenkins启动模拟器来测试Android应用程序。这是我在jenkins和控制台输出中的项目设置:当我尝试使用现有的模拟器设备和他的名字尝试Jenkinsandroid模拟器插件时,设置和输出在这里:构建成功,但在测试运行时看不到正在运行的模拟器。这两个选项的奇怪之处在于,当我启动命令行并键入这两个命令时,模拟器始终显示并且运行正常。但是从Jenkins那里,在第二个选项中我看不到它。第一个选项被卡住了。请看屏幕。有人可以帮我提点建议吗?我尝试了很多选项,但我无法弄明白。非常感谢:)P.S.:这是输出文本(以防有人想复制它)1)C:\ProgramFiles(x86)\Jen

  7. android - 如何在 Windows 上终止 adb.exe?怎么老是重启 - 2

    我正在尝试终止我的Windows机器上的adb.exe。我正在使用taskkill/F/IMadb.exe/T来执行此操作。但是,每次我这样做时,3个adb.exe实例都会返回到任务管理器进程View中。有些东西正在重新启动它们。我正在尝试做一些虚拟机之间的连接,我需要adb.exe停止运行并在Windows主机上保持停止状态,因为它会产生干扰。我如何确定是什么重新启动了这些进程?或者以其他方式让adb.exe保持死状态而不做极端的事情,比如暂时从Windows主机中删除它?补充说明:当我运行taskkill时,一个名为“ServiceHost:DCOMServerProcessLau

  8. android - 如何调试windows版本的adb.exe? - 2

    我已经使用MINGW=yes构建了整个android源代码和adb.exe。但是如何调试呢?谢谢。 最佳答案 gdb是调试Android的首选工具。谷歌“使用gdb调试android”以供引用。一个好的开始点是http://www.omappedia.org/wiki/Android_Debugging. 关于android-如何调试windows版本的adb.exe?,我们在StackOverflow上找到一个类似的问题: https://stackover

  9. Android 调试桥 adb shell - 2

    我想知道是否可以通过编写批处理文件或任何其他方式从Windows远程运行/system/bin/shandroidshell命令。当我写一个批处理文件时,它没有在“adbshell”之后执行任何命令(控制权正在转移到/system/bin/sh,我不能从这里运行任何命令)我需要知道是否有一种方法可以在不手动输入命令的情况下向我的Android设备上运行的shell发出命令? 最佳答案 将以下行发送到输入缓冲区以供adbshell处理的简单示例。@echooff(echolsechocdsdcardecholsechoexit)|ad

  10. android - 在 ANDROID_HOME Windows 7 x64 中找不到 Adb - 2

    我刚开始学习SDKUIAutomator工具,但瞬间卡住了。当我在Python`上运行简单代码时:fromuiautomatorimportdeviceasdd.info我得到以下回溯:"Adbnotfoundin$ANDROID_HOMEpath:%s."%os.environ["ANDROID_HOME"])OSError:Adbnotfoundin$ANDROID_HOMEpath:C:\ProgramFiles(x86)\Android\android-sdk\tools我已将/tools和/platform-tools添加到系统变量中-出现问题,然后我创建了用户变量ANDRO

随机推荐