ADB的基本语法及常用命令
学习网址
ADB命令的基本语法如下:
adb [-d|-e|-s <serialNumber>] <command>
如果有多个设备/模拟器连接,则需要为命令指定目标设备。
参数及含义如下:
常用命令如下:
1. 启动ADB服务
adb start-server
2. 停止ADB服务
adb kill-server
3. 指定ADB服务的网络端口
adb -P <port> start-server
默认端口为5037
4. 查询已连接设备/模拟器
adb devices
输出示例:
List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device
输出格式为 [serialNumber] [state],serialNumber即我们常说的SN,state有如下几种:
offline 表示设备未连接成功或无响应;
device 设备已连接。注意这个状态并不能标识Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到ADB,但启动完毕后系统才处于可操作状态;
no device 没有设备/模拟器连接;
常见异常输出:
1. 没有设备/模拟器连接成功;
List of devices attached
2. 设备/模拟器未连接到ADB或无响应;
List of devices attached
cf264b8f offline
5. 无线连接(需要借助USB 线)
除了可以通过USB 连接设备与电脑来使用ADB,也可以通过无线连接,虽然连接过程中也有需要使用USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱USB 连接线的限制了。
操作步骤:
1. 将Android 设备与要运行ADB的电脑连接到同一个局域网,比如连到同一个WiFi;
2. 将设备与电脑通过USB 线连接;
应确保连接成功,可运行adb devices看是否能列出该设备。
3. 让设备在5555 端口监听TCP/IP 连接;
adb tcpip 5555
4. 断开USB 连接;
5. 找到设备的IP 地址;
一般能在 wifi信息找到。
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然后从头再来一次试试。
8. 断开无线连接;
adb disconnect <device-ip-address>
6. 无线连接(无需借助USB 线)
注:需要root 权限
上面是官方文档里介绍的方法,需要借助于USB 数据线来实现无线连接。
既然我们想要实现无线连接,那能不能所有步骤下来都是无线的呢?答案是能的。
1. 在Android 设备上安装一个终端模拟器;
已经安装过的设备可以跳过此步。我使用的终端模拟器下载地址是:[Terminal Emulator for Android Downloads]
2. 将Android 设备与要运行ADB的电脑连接到同一个局域网,比如连到同一个WiFi;
3. 打开Android 设备上的终端模拟器,在里面依次运行命令;
su
setprop service.adb.tcp.port 5555
4. 找到Android 设备的IP 地址;
一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里[查看设备信息- IP地址]一节里的方法用adb命令来查看。
5. 在电脑上通过adb 和IP 地址连接Android 设备;
adb connect <device-ip-address>
这里的<device-ip-address>就是上一步中找到的设备IP地址。
如果能看到connected to <device-ip-address>:5555这样的输出则表示连接成功。
有的设备,比如小米5S + MIUI 8.0 + Android 6.0.1 MXB48T,可能在第5 步之前需要重启adbd 服务,在设备的终端模拟器上运行:
restart adbd
如果restart 无效,尝试以下命令:
stop adbd
start adbd
7. 应用管理
7.1. 查看应用列表
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
7.2. 安装APK
adb install [-l -r -t -s -d -g] <path_to_apk>
Success代表安装成功,Failure表示安装失败。
实际是分三步完成:
1. push apk 文件到/data/local/tmp;
2. 调用pm install 安装;
3. 删除 /data/local/tmp 下的对应apk 文件;
所以,必要的时候也可以根据这个步骤,手动分步执行安装过程。
7.3. 卸载应用
adb uninstall [-k] <packagename>
命令示例:
adb uninstall com.centent.mm
表示卸载微信
7.4. 清除应用数据与缓存
adb shell pm clear <packagename>
<packagename> 表示应用名包,这条命令的效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。
命令示例:
adb shell pm clear com.qihoo360.mobilesafe
表示清除360 手机卫士的数据和缓存。
7.5. 查看前台Activity
adb shell "dumpsys activity | grep mResumedActivity"
安卓版本不同使用的命令有所差异。
输出示例:
mResumedActivity: ActivityRecord{331d51f u0 com.tencent.mm/.ui.LauncherUI t1769}
其中的 com.tencent.mm/.ui.LauncherUI 就是当前处于前台的Activity。
7.6. 查看正在运行的Services
adb shell dumpsys activity services [<packagename>]
<packagename> 参数不是必须的,指定 <packagename> 表示查看与某个包名相关的Services,不指定表示查看所有Services。
<packagename>不一定要给出完整的包名,比如运行adb shell dumpsys activity services org.mazhuang,那么包名org.mazhuang.demo1、org.mazhuang.demo2等相关的Services都会列出来。
7.7. 查看应用详细信息
adb shell dumpsys package <packagename>
<packagename> 表示应用包名。
输出中包含很多信息,包括Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。
7.8. 查看应用安装路径
adb shell pm path <packagename>
输出应用安装路径
输出示例:
package:/data/app/ecarx.weather-1.apk
8. 与应用交互
adb shell am <command>
8.1. 启动应用/调起Activity
adb shell am start -n Activity
8.2. 调起Service
adb shell am startservice -n Service
8.3. 停止Service
adb shell am stopservice [options] <INTENT>
8.4. 强制停止应用
adb shell am force-stop 包名
9. 文件管理
9.1. 复制设备里的文件到电脑
adb pull <设备里的文件路径> [电脑上的目录]
9.2. 复制电脑里的文件到设备
adb push <电脑上的文件路径> <设备里的文件名>
注意:后边的是设备上的文件名
10. 模拟按键
adb shell input keyevent 键值
11. 模拟输入文本
adb shell input text 英文文本
输入文本时只能输入英文文本或是拼音,需要结合确定键或是回车键才能将想要输入的内容填进输入框里。
12. 模拟滑动
adb shell input swipe x1 y1 x2 y2 time
13. 模拟点击
adb shell input tap x y
相关文章:

ADB的基本语法及常用命令
学习网址 ADB命令的基本语法如下: adb [-d|-e|-s <serialNumber>] <command> 如果有多个设备/模拟器连接,则需要为命令指定目标设备。 参数及含义如下: 常用命令如下: 1. 启动ADB服务 adb start-server 2. 停止…...

Linux之bpfjit(2)使用分析和mini-tcpdump实现
Linux之bpfjit(2)使用分析和mini-tcpdump实现 Author: Once Day Date: 2024年4月13日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可以参考专栏:…...
adb常用命令汇总
Android Debug Bridge (adb) 是一个多功能命令行工具,它允许你与连接的Android设备或在电脑上的Android模拟器进行通信。下面列出了一些常用的adb命令: 启动adb服务: adb start-server停止adb服务: adb kill-server查看已连接的设…...

JVM虚拟机(三)垃圾回收简介、垃圾回收算法、分代回收、垃圾回收器种类、G1垃圾回收器
目录 一、什么是垃圾回收?1.1 什么是垃圾回收?1.2 什么对象能被垃圾回收?1)引用计数法2)可达性分析算法 二、JVM 垃圾回收算法2.1 标记清除算法2.2 标记整理算法(标记压缩算法)2.3 复制算法2.4 …...

JavaScript基础:js介绍、变量、数据类型以及类型转换
目录 介绍 引入方式 内部方式 外部形式 注释和结束符 单行注释 多行注释 结束符 输入和输出 输出 输入 变量 声明 赋值 关键字 变量名命名规则 常量 数据类型 数值类型 字符串类型 布尔类型 undefined 类型转换 隐式转换 显式转换 Number ✨介绍 &a…...

【牛客SQL快速入门】SQL基础(三)
一、条件函数 IF 条件函数 IF函数是最常用到的条件函数,写法为 if(xn,a,b),xn代表判断条件,如果xn时,那么结果返回a,否则返回b。 -- 把非北京大学的用户统一归为其他大学 Select device_id,if(university ‘北京大…...

Pytorch手撸Attention
Pytorch手撸Attention 注释写的很详细了,对照着公式比较下更好理解,可以参考一下知乎的文章 注意力机制 import torch import torch.nn as nn import torch.nn.functional as Fclass SelfAttention(nn.Module):def __init__(self, embed_size):super(S…...

PyCharm 2024.1 发布:全面升级,助力高效编程!
PyCharm 2024.1 发布:全面升级,助力高效编程! 文章目录 PyCharm 2024.1 发布:全面升级,助力高效编程!摘要引言 Hugging Face:模型和数据集的快速文档预览针对 JavaScript 和 TypeScript 的全行代…...
Nginx基础(06)
Nginx基础(05) uWSGI 介绍 uWSGI 是一个 Web服务器 主要用途是将Web应用程序部署到生产环境中 可以用来连接Nginx服务与Python动态网站 1. 用 uWSGI 部署 Python 网站项目 配置 Nginx 使其可以将动态访问转交给 uWSGI 安装 python 工具及依赖 安…...

【Qt 学习笔记】QWidget的windowOpacity属性 | cursor属性 | font属性
博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ QWidget的windowOpacity属性 | cursor属性 | font属性 文章编号&#…...

Python爬虫:requests模块的基本使用
学习目标: 了解 requests模块的介绍掌握 requests的基本使用掌握 response常见的属性掌握 requests.text和content的区别掌握 解决网页的解码问题掌握 requests模块发送带headers的请求掌握 requests模块发送带参数的get请求 1 为什么要重点学习requests模块&…...
C++traits
traits C的标准库提供了<type_traits>,它定义了一些编译时基于模板类的接口用于查询、修改类型的特征:输入的时类型,输出与该类型相关的属性 通过type_traits技术编译器可以回答一系列问题:它是否为数值类型?是否为函数对象…...

gitee和idea集成
1 集成插件 2 配置账号密码 3 直接将项目传到仓库 4直接从gitee下载项目...
阿维·威格德森(Avi Wigderson)研究成果对人工智能领域的应用有哪些影响
AI人工智能的影响 威格德森(Avi Wigderson)的研究成果对人工智能领域的应用产生了深远的影响。 首先,威格德森在计算复杂性理论、算法和优化方面的贡献为人工智能领域提供了高效、准确的计算模型和算法。他的研究帮助我们更好地理解计算问题…...

【免费领取源码】可直接复用的医院管理系统!
今天给大家分享一套基于SpringbootVue的医院管理系统源码,在实际项目中可以直接复用。(免费提供,文中自取) 系统运行图(设计报告和接口文档) 1、后台管理页面 2、排班管理页面 3、设计报告包含接口文档 源码免费领取方式 后台私信…...

leetcode代码记录(全排列 II
目录 1. 题目:2. 我的代码:小结: 1. 题目: 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1…...

【数据结构与算法】之双向链表及其实现!
个人主页:秋风起,再归来~ 数据结构与算法 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 目录 1、双向链表的结构及概念 2、双向链表的实现 2.1 要实现的接口…...

记一次奇妙的某个edu渗透测试
前话: 对登录方法的轻视造成一系列的漏洞出现,对接口确实鉴权造成大量的信息泄露。从小程序到web端网址的奇妙的测试就此开始。(文章厚码,请见谅) 1. 寻找到目标站点的小程序 进入登录发现只需要姓名加学工号就能成功…...
设计模式学习笔记 - 设计模式与范式 -总结:1.回顾23中设计模式的原理、背后的思想、应用场景等
1.创建型设计模式 创建型设计模式包括:单例模式、工厂模式、建造者模式、原型模式。它主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。 1.单例模式 单例模式用来创建全局唯一的对象。一个类只允许创建一个对象…...

22 文件系统
了解了被打开的文件,肯定还有没被打开的文件,就是磁盘上的文件。先从磁盘开始认识 磁盘 概念 内存是掉电易失存储介质,磁盘是永久性存储介质 磁盘的种类有SSD,U盘,flash卡,光盘,磁带。磁盘是…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...

Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

Redis上篇--知识点总结
Redis上篇–解析 本文大部分知识整理自网上,在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库,Redis 的键值对中的 key 就是字符串对象,而 val…...