Android ADB 使用笔记

news/2025/2/15 11:25:53/文章来源:https://www.cnblogs.com/foryouos/p/18716680

ADB

工作原理

当启动某个adb客户端时,该客户端会先检查是否有adb服务器正在运行,如果没有启动服务器进程。服务器会在启动后与本地TCP端口 5037 绑定,并监听adb客户端 发出的命令。

服务器会与所有正在运行的设备建立连接,通过扫描 5555 - 5585 之间(该范围提供16个模拟器使用) 的奇数号端口查找模拟器,服务器一旦发现adb守护程序,便会与对应的端口建立连接
ADB原理图

  • Client 本质上就是 shell,用来发送命令Server ,默认 5037 端口.
  • ADB Server :运行在PC上的后台程序,目的是检测USB接口何时连接或者移除设备.
  • ADB Daemon : 程序adbd 作为一个后台进程在Android 设备或模拟器系统中运行。其目的是连接ADB服务器,为运行在主机上的客户端提供一些服务.

命令详解

基础命令

adb version  # 查看adb的版本adb help  # 查看adb支持的所有命令adb devices # 查看当前连接的设备,已连接的设备会显示adb get-serialno # 获取设备号adb root  # 获取 Android管理员 root 用户权限adb shell # 登录设备shell ,该命令将登录设备的shell,登录shell后,可以使用cd ls rm等linux命令

建立连接

adb -d # 如果同时连接了 usb 又开了模拟器,连接当前唯一通过usb连接的安卓设备
adb -e shell # 指定当前连接此电脑的唯一的一个模拟器
adb -s <设备号> shell # 当电脑插入多台 手机或模拟器时,指定一个设备号进行连接
exit # 退出
adb kill-server # 杀死当前adb服务,如果连不上设备时,杀掉重启
adb start-server # 杀掉后重启# 5037 :adb 默认端口,如果该端口被占用,
adb -p 6666 start-server  # 指定一个adb shell的端口

packages

adb shell pm list packages #列出当前设备/手机 ,所有的报名adb shell pm list packages -f # 显示包和包相关联的文件(安装路径)adb shell pm list packages -d  # 显示禁用的包名
adb shell pm list packages -e # 显示当前启用的包名
adb shell pm list packages -s # 显示系统应用包名
adb shell pm list packages -3 # 显示已安装第三方的包名
adb shell pm list packages xxxx # 加需要过滤的包名,如:xxx = taobao

apk操作


# 安装应用程序 apk 到手机当中
adb install <文件路径.apk> # 将本地的apk软件安装到设备(手机上) 如手机外部安装需要密码,需输入密码adb install -r <文件路径.apk> # 覆盖安装# 允许 降级覆盖安装
adb install -d <文件路径.apk>
# 授权/获取权限,安装软件时把所有权限都打开
adb install -g <文件路径.apk>
# 卸载apl
adb uninstall <包名>
# 如果获取包名 可以通过 adb shell pm list packages
adb shell pm uninstall -k <包名> # 虽然把此应用卸载,当仍然保留此应用的数据和婚车
adb shell am force-stop <包名>  # 强制退出该应用/app

文件操作指令

# 将本地PC的文件或文件夹 复制到 手机设备
adb push <本地路径\文件或文件夹> <手机路径>
adb push  G:\music\ /storage/emulated/0/Music/QQMusic# 把设备(手机)的文件或文件夹复制到本地
adb pull <手机路径\文件或文件夹> <pc机路径>adb pull /storage/emulated/0/Music/QQMusic G:\music\adb pull /data/user_de/0/com.android.shell/files/bugreports/bugreport-meizu_21_CN-UKQ1.230917.001-2024-12-31-18-54-35.zip G:\music\

数据备份与恢复

adb backup -all

日志操作

系统操作指令

adb shell getprop ro.product.model # 获取设备型号
adb shell getprop ro.build.version.release # 获取Android系统版本
adb get-serialno # 获取设备的序列号
adb shell wm size #获取设备屏幕分辨率adb shell screencap -p /storage/emulated/0/Music/1.png  # 屏幕截图
# Android 5之后 可以字节使用adb exec-out 命令将文件保存到PC
adb exec-out screencap -p > D:\test.png # 获取前台应用程序包名  ??? 暂时 没有获取 到
adb shell dumpsys activity | find "mResumedActivity"  # 获取手机内存信息
adb shell cat /proc/meminfo# 获取手机存储信息
adb shell df

打开浏览器

# 使用系统浏览器 打开网页
adb shell am start -a android.intent.action.VIEW -d https://www.baidu.com

模拟键盘

adb shell input keyevent 3 # 按下HOME 键
adb shell input keyevent 4 # 按下返回键adb shell input keyevent 26 # 按下电源键
adb shell input keyevent 82 # 按下菜单键adb shell input keyevent 223 # 熄灭屏幕
adb shell input keyevent 224 # 点亮屏幕adb shell input keyevent 67 # 删除

文本框输入

adb  shell input text "yu"

点击

adb shell input tap 458 573 # 根据坐标点击

滑动

adb shell input swipe 550 1200 550 375 # 滑动解锁
adb shell input swipe 700 200 100 200 # 左翻页
adb shell input swipe 100 200 1000 200 # 右翻页

录制屏幕

adb shell screenrecord /sdcard/filename22.mp4
adb pull /sdcard/filename22.mp4
adb shell rm /sdcard/filename22.mp4adb shell screenrecord  --time-limit 10 /sdcard/demo.mp4
adb shell screenrecord --size 1280*720 /sdcard/demo.mp4
adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4

联网

adb shell svc wifi enable # 打开WIFI
adb shell svc wifi disable # 关闭 WIFI# 查看连结果的WIFI密码
adb shell cat /data/misc/wifi/*.conf# 开启飞行模式
adb shell settings put global airplane_mode_on 1
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true# 关闭飞行模型adb shell settings put global airplane_mode_on 0
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false

svc 命令

# 控制USB插入时 屏幕常亮
svc power stayon [true|false|usb|ac]
# 关闭 或开启数据连接
svc data [enable|disable]# 关闭 与 打开 WIFI
svc wifi [enable|disable]
# 打开 与 关闭 nfc
svc nfc [enable|disable]
# 打开与关闭蓝牙设备
svc bluetooth [enable|disable]
# 控制 开关机
# 重启
svc power reboot
# 关机
svc power shutdown
# 设置挂起
svc power forcesuspend

重启指令

  • 重启设备adb reboot
  • 重启到 Recovery 模式 : adb reboot recovery
  • 重启到 Bootloader 模式 : adb reboot bootloader

参考资料

解析adb shell svc源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/884189.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

别再误解了!AI 不是软件且不接受反驳!

是的,今天的 AI 是用软件编写的,但如今的实现实际上是一个计算图,它计算的是虚拟神经元网络的行为。软件仅仅是该网络的一个模拟。 让我解释一下。 就像我说的,神经网络 AI 实际上是一组相互连接的虚拟“神经元”。每个神经元或多或少地模拟了人类神经元的行为。这张图数学…

欧拉角和四元数,3D 游戏开发中“旋转”难题的通俗讲解和应用实战

本文深入浅出地介绍了3D游戏开发中常用的旋转工具——欧拉角和四元数。通过生动的例子和代码演示,详细解释了它们的基本概念、应用场景以及如何解决万向锁、插值和计算效率等问题。无论你是初学者还是有经验的开发者,都能从中获得实用的知识和技巧……春节期间,老牛同学学习…

【Go-bug】go引入自建包名报错 package XXX is not in std

引入 这个问题从昨晚学到Package和Module这块的时候就开始折磨我,这里说道:Go语言也有 Public 和 Private 的概念,粒度是包。如果类型/接口/方法/函数/字段的首字母大写,则是 Public 的,对其他 package 可见,如果首字母小写,则是 Private 的,对其他 package 不可见。于…

[AI/前沿展望/综述] AI大模型的技术生态链全景图

序【特别说明】1、本文主要面向对象:开发者、对AI前沿技术感兴趣、基于AI创业的伙伴们 2、本文是对当前AI大模型的技术生态链的【综述】性文章。(文章有点长,预计阅读时长>10min)3、原作者:阿里云开发者(组织机构)(故,极小部分观点有含暗广的嫌疑。但瑕不掩瑜)关键词AI大模…

大语言模型的解码策略与关键优化总结

本文系统性地阐述了大型语言模型(Large Language Models, LLMs)中的解码策略技术原理及其实践应用。通过深入分析各类解码算法的工作机制、性能特征和优化方法,为研究者和工程师提供了全面的技术参考。主要涵盖贪婪解码、束搜索、采样技术等核心解码方法,以及温度参数、惩罚机…

mini-lsm通关笔记Week3Day3

项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm在本章中,您将:在上一章的基础上完成读路径,以支持快照读。 实现事务API,支持快照读。 引擎恢复过程中能正确恢复已提交时间戳。最后,您的引擎将能够为用户提供存储键(key…

软件测试流程——H模型

1、产品开需求澄清会议 2、开发和测试拿到需求 3、分析需求,编写测试计划 4、编写测试用例 5、评审测试用例 6、评审通过,将用例导入用例管理工具 7、搭建环境 8、开发提交项目代码包,达到准入条件 9、测试将项目代码包部署到环境中 10、开始冒烟测试 (冒烟测试通过,则进入…

请求被中止: 未能创建 SSL/TLS 安全通道_微信红包接口_iis_windows

开发微信红包接口过程中出现:请求被中止: 未能创建 SSL/TLS 安全通道。本地调试正常,但是服务器上不行。 通用方法:指定使用的协议tls(https://myssl.com,这里可以测试对应接口服务器支持的协议) 证书导入赋予权限,参考如下文章: 两种方式彻底解决请求被中止- 未能创建…

SpringBoot环境搭建

JDK 在Oracle官网下载JDK11需注册Oracle账户,较麻烦。 在https://jdk.java.net/archive/找到11 GA (build 11+28)下载Windows版本的压缩包解压后将jdk-11文件夹放到合适位置(多个版本可同时存在),IDE可自动检测到该JDK 如果存在问题可能需要进一步配置环境变量,先创建一个…

C语言静态查找表的查找算法(顺序查找、折半查找)

顺序查找的实现#include <stdio.h>#define SIZE 10 // 静态查找表的大小// 顺序查找函数 int sequentialSearch(int arr[], int size, int target) {for (int i = 0; i < size; i++) {if (arr[i] == target) {return i; // 查找成功,返回目标的索引}}return -1; /…

游戏陪玩接单平台源码,如何实现按钮悬浮功能

游戏陪玩接单平台源码,如何实现按钮悬浮功能实现可视区域底部悬浮编辑提交等功能的悬浮框: 并当滚动到某处时, 固定在该处<template><div><slot></slot><divv-show="show"style="height: 80px"></div></div>…

11. Docker 微服务实战(将项目打包生成镜像,在 Docker 当中作为容器实例运行)

11. Docker 微服务实战(将项目打包生成镜像,在 Docker 当中作为容器实例运行) @目录11. Docker 微服务实战(将项目打包生成镜像,在 Docker 当中作为容器实例运行)2. 最后:建 Module - docker_boot编辑 pom<?xml version="1.0" encoding="UTF-8"?&g…