| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android 10 根文件系统和编译系统(四):ADB使用 -> 正文阅读 |
|
[移动开发]Android 10 根文件系统和编译系统(四):ADB使用 |
配套系列教学视频链接:Android 10.0 AOSP源码编译:https://edu.csdn.net/course/detail/35479 Android 10.0 根文件系统和编译系统:https://edu.csdn.net/course/detail/35480? 说明系统:AOSP Android10.0 设备:Android模拟器 前言本章节重点介绍Android系统中ADB的运行基本框架, ADB连接方法, 以及ADB常见命令 一, 基本框架adb(Android Debug Bridge) 安卓调试桥,包含adb client、adb server和adbd三部分:
其实在PC HOST端,adb会fork出一个守护进程(不是adbd),即ADB Server,而父进程(ADB Client)继续处理Client请求,所有的Client通过TCP端口号5037进行与Server通信,而Server创建 local socket 与 remote socket,前者用于和Client通信,后者用与远端进行通信,emulator通过TCP,real device则通过usb。 当启动某个 adb 客户端时,客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护进程 (adbd),便会与相应的端口建立连接。 adb client 与 adb server 之间是通过 tcp 进行通信,adb server 和 adbd 通过 usb 或者 tcp 进行通信。ADB Server 对本地的 TCP?5037 端口进行监听,等待 ADB Client 的命令。 ? 二, ADB链接设备方法1, ADB工具adb?包含在 Android SDK 平台工具软件包中。您可以使用?SDK 管理器下载此软件包,该管理器会将其安装在?android_sdk/platform-tools/?下。或者,如果您需要独立的 Android SDK 平台工具软件包,也可以点击此处进行下载:https://developer.android.com/studio/releases/platform-tools?hl=zh-cn 我们提供已经下载好的:? 2, USB线连接调试a,?确保手机和PC机通过USB链接,并且安装adb驱动. b,确保手机中USB调试已经打开,在设置->更多设置->开发者选项(user版本需要连续点击android版本号或者内核版本号才会出现) ? c,?确保在手机中在adb通信时,手机确认授权 ? ?3, wifi无线连接调试a,? USB需要一次连接, 通过adb tcpip 端口号(注意,临时有效, 手机重启后需要重新设置) c,? PC端通过命令行: adb ?connect ?手机ip:端口号(第一个步骤) ? 三, ADB常见命令通用命令: ? ? ? ? ? ? ?adb devices [-l] ????????????列举所有设备,-l 表示长输出 ? ? ? ? ? ? ?adb help? ? ? ? ? ? ? ? ? ? ? ? 查看帮助 ? ? ? ? ? ? ? ?adb version? ? ? ? ? ? ? ? ? ?显示adb版本 选项: adb ?-a 命令针对所有的设备,需要与命令一起使用,例如 adb -a push <local> <remote> -d:真机(多个设备中只有一个真机时适用) -e:模拟器(多个设备中只有一个模拟器时适用) adb -s <specific device> 命令指定设备,有多个模拟器或手机,当使用adb命令的时候就需要指定目标设备。 网络命令: adb connect <host>[:<port>] ??????- connect to a device via TCP/IP ?????????????????????????????????Port 5555 is used by default if no port number is specified. adb disconnect [<host>[:<port>]] ?- disconnect from a TCP/IP device. ?????????????????????????????????Port 5555 is used by default if no port number is specified. ?????????????????????????????????Using this command with no additional arguments ?????????????????????????????????will disconnect from all connected TCP/IP devices. 文件传输命令: adb push <local>... <remote> ???????????????????????????????- copy files/dirs to device adb pull [-a] <remote>... <local> ???????????????????????????????- copy files/dirs from device ?????????????????????????????????(-a preserves file timestamp and mode) 包的安装和卸载: adb install [-lrtsdg] <file> adb install-multiple [-lrtsdpg] <file...> ??????? - push this package file to the device and install it ?????????????????????????????????(-l: 直接锁定app) ?????????????????????????????????(-r: 替换已存在的app) ?????????????????????????????????(-t: 允许安装测试包) ?????????????????????????????????(-s: 安装到sdcard中) ?????????????????????????????????(-d: 允许降版本安装(只在针对调试版本的app有用)) ?????????????????????????????????(-g: 安装时获取所有权限,(只有6.0系统可用)) adb uninstall -k <package_name> ? ? ? ? 可选参数-k的作用为卸载软件但是保留配置和缓存文件 调试命令: adb bugreport [<zip_file>] ??- 生成bugreport文件 adb ?logcat ??????????????直接输出android系统的log日志 scripting命令: adb start-server ???????????确保启动adb server(注意,不是adbd) ??adb kill-server ?????????????杀死adb server adb get-serialno ?: 获取设备唯一序列号(如打卡app通过该值判断是否重复打卡) adb get-state? ???: 获取设备的状态 设备的状态有3种,device , offline , unknown
adb remount: 重新将设备中/system,/vendor (if present) and /oem (if present) 重新挂载为可读写 adb reboot [bootloader|recovery|sideload|sideload-auto-reboot]
??adb root ??????????以root权限重启adbd, adb shell进入之后,就是以root身份操作了,一般是在镜像 为userdebug版本下。 ??adb unroot ????????取消root权限来重启adbd ??adb usb ???????????重启adbd并监听 USB连接 ??adb tcpip <port> ????重启adbd并监听指定TCP/IP端口的连接 执行shell命令: adb shell ls ???? 基于以上命令衍生出来的常见操作: adb shell pm list packages: 列举系统已安装的app adb shell pm list packages -3 # 第三方应用 adb shell pm list packages smart # 包名包含smart字符串的应用 adb shell dumpsys package <package_name> | grep version :查看某个包的版本信息 adb shell am start -n <package_name>/.<activity_class_name> :手动启动某个activity adb shell getprop | grep version: 获取系统版本号 adb shell wm size :获取系统分辨率 adb shell dumpsys meminfo : 获取系统进程占用内存情况 总结ADB命令会比较多, 可根据自己实际情况进行操作。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 9:36:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |