adb的学习日记

Android调试桥 (adb) 

Android调试桥 (adb) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。该工具作为一个客户端-服务器程序,包括三个组件:

客户端,该组件发送命令。客户端在开发计算机上运行。您可以通过发出adb 命令从命令行终端调用客户端。

后台程序 A daemon (adbd),该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。

服务器,该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。

放个自己理解画的图


adb有什么用

借助adb工具我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。

1)、快速更新设备或手机模拟器中的代码,如应用或Android 系统升级; 

2)、在设备上运行shell命令; 

3)、管理设备或手机模拟器上的预定端口; 

4)、在设备或手机模拟器上复制或粘贴文件;

 

当然有好玩的用处

从别的文章中看到的。。。

有了这个工具,就可以在手机上做很多比较好玩的事情。比如前段时间比较火的微信小程序游戏“跳一跳”,利用adb进行截屏,opencv进行图像处理,自动“跳一跳”得高分。又比如一些自动点赞、刷票、打卡等小工具。

 

一些基础的adb命令 

查看到连接的手机设备信息

  adb devices

安装apk

mac 系统

首先 将文件拖入终端就可得地址

然后  adb install test.apk -r 覆盖安装,保留数据和缓存文件  -d 解决低版本version问题  -s 安装apk到sd卡 就完成了。

启动Activity:

     adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-ccategory,-e 扩展数据,等)。

启动应用:

adb shell am start -n <package_name>/.<activity_class_name> 

例如:adb shell am start -n yf.o2o.store/yf.o2o.store.activity.LoginActivity

 

让原本数据线连接的设备 变为无线:

保证手机和电脑处在同一个无线网络内

在USB连接的基础上,执行命令【adb tcpip 5555】

断开USB连接,执行命令【adb connect 设备ip地址:5555】

此时执行命令【adb devices】即可查看到连接的手机设备信息

就像git一样的 push 和pull命令 

从本地复制文件到设备:

adb push  

从设备复制文件到本地:

adb pull 

运行adb 命令获取屏幕分辨率等信息:


 



模拟用户事件

文本输入:adb shell input text

例:手机端输出demo字符串,相应指令:adb shell input "demo".

键盘事件:input keyevent ,其中KEYCODE见本文结尾的附表

例:点击返回键,相应指令: input keyevent 4.

点击事件:input tap

例: 点击坐标(500,500),相应指令: input tap 500 500.

滑动事件:input swipe

例: 从坐标(300,500)滑动到(100,500),相应指令: input swipe 300 500 100 500.

例: 200ms时间从坐标(300,500)滑动到(100,500),相应指令: input swipe 300 500 100 500 200.


与应用交互

与应用交互主要是使用am <command>命令,常用的<command>如下:

command用途

start [options] <intent>启动<intent>指定的 Activity

startservice [options] <intent>启动<intent>指定的 Service

broadcast [options] <intent>发送<intent>指定的广播

force-stop <package-name>停止<package-name>相关的进程

Activity

adb shell am start -a android.settings.SETTINGS # 打开系统设置页面adb shell am start -a android.intent.action.DIAL -d tel:10086 # 打开拨号页面adb shell am start -n com.android.mms/.ui.ConversationList # 打开短信会话列表

Service

adb shell am startservice [options] 

一个典型的用例是如果设备上原本应该显示虚拟按键但是没有显示,可以试试这个:

adb shell am startservice -n com.android.systemui/.SystemUIService

broadcast

向所有组件广播 BOOT_COMPLETED:
adb shell am broadcast [options] <INTENT>

只向 com.android.receiver.test/.BootCompletedReceiver 广播 BOOT_COMPLETED:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.android.receiver.test/.BootCompletedReceiver

Android 日志

查看 Android 设备系统属性的基本命令格式是:

adb logcat [option] [filter-specs]复制代码

如果需要停止logcat日志打印,可以按Ctrl + C停止日志监控。

按级别过滤日志

按级别过滤日志的基本命令格式是:

adb logcat [filter-specs]复制代码

Android 的日志分为如下几个优先级(priority):

级别含义

*:V过滤只显示 Verbose 及以上级别(优先级最低)

*:D过滤只显示 Debug 及以上级别

*:I过滤只显示 Info 及以上级别

*:W过滤只显示 Warning 及以上级别

*:E过滤只显示 Error 及以上级别

*:F过滤只显示 Fatal 及以上级别

*:S过滤只显示 Silent 及以上级别(优先级最高,什么也不输出)

按某级别过滤日志则会将该级别及以上的日志输出。

比如,命令:

adb logcat *:W复制代码

会将 Warning、Error、Fatal 和 Silent 日志输出。

注:在 macOS 下需要给*:W这样以*作为 tag 的参数加双引号,如adb logcat "*:W",不然会报错no matches found: *:W。)

 按 tag 和级别过滤日志

按 tag 和级别过滤日志的基本命令格式是:

adb logcat [tag:level] [tag:level] ...复制代码

比如,命令:

adb logcat ActivityManager:I MyApp:D *:S复制代码

表示输出 tagActivityManager的 Info 以上级别日志,输出 tagMyApp的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。

 


关于adbd

觉得adbd是个有趣的东西

就探索了一下 

  注:JDWP 是 Java Debug Wire Protocol 的缩写,它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议。它仅仅定义了数据传输的格式 ,Java 调试体系。

由于本人技术有限,详情在jdwp主讲页

关于这个方面,希望自己日后可以补充。

参考资料

jdwp主讲页

https://juejin.im/post/5b5683bcf265da0f9b4dea96

https://developer.android.com/studio/command-line/adb

 

### ADB(Android Debug Bridge)入门教程和常用命令详解 ADB(Android Debug Bridge)是 Android 开发者工具包(SDK)中的重要工具之一,它提供了一种通过计算机的命令行与 Android 设备进行交互的方式。使用 ADB,开发者可以运行设备上的 Shell 命令、安装或卸载应用程序、管理端口映射以及在设备和计算机之间传输文件等[^2]。 #### 1. ADB 的基本用法 ##### 1.1 安装 ADB 要开始使用 ADB,首先需要在计算机上安装它。ADB 可以通过 Android SDK Platform-Tools 包获取,用户可以从官方网站下载并按照指导进行安装[^3]。 ##### 1.2 连接设备 确保你的 Android 设备已启用“开发者选项”和“USB 调试模式”。然后,将设备通过 USB 连接到计算机。在命令行中输入以下命令来确认设备是否被正确识别: ```bash adb devices ``` 该命令会列出所有连接到计算机的设备。 ##### 1.3 常用 ADB 命令 以下是一些常用的 ADB 命令及其用途: - **安装应用**: ```bash adb install <文件路径/apk> ``` 如果需要降级安装,可以使用: ```bash adb install -r <文件路径/apk> ``` - **卸载应用**: ```bash adb uninstall <包名> ``` 可以通过以下命令查看设备上的应用包名: ```bash adb shell pm list packages ``` - **运行 Shell 命令**: 用户可以直接在设备上运行 Shell 命令,例如: ```bash adb shell ``` 进入设备的 Shell 环境后,可以执行各种 Linux 命令。 - **文件传输**: 将文件从计算机复制到设备: ```bash adb push <本地文件路径> <设备目标路径> ``` 将文件从设备复制到计算机: ```bash adb pull <设备文件路径> <本地目标路径> ``` - **重启设备**: ```bash adb reboot ``` - **进入 Fastboot 模式**: ```bash adb reboot bootloader ``` 进入 Fastboot 模式后,可以使用 Fastboot 工具对设备进行更底层的操作,如刷写系统镜像。 #### 2. 高级技巧 ##### 2.1 端口转发 ADB 支持端口转发功能,允许你在计算机和设备之间建立网络连接。例如,将计算机的某个端口转发到设备的某个端口: ```bash adb forward tcp:<计算机端口> tcp:<设备端口> ``` ##### 2.2 日志查看 通过 ADB 可以查看设备的日志输出,这对于调试应用程序非常有用: ```bash adb logcat ``` 该命令会显示设备的日志信息,帮助开发者分析问题。 ##### 2.3 多设备管理 如果有多台设备连接到计算机,可以通过指定序列号来操作特定设备: ```bash adb -s <设备序列号> <命令> ``` 设备序列号可以通过 `adb devices` 命令获取。 #### 3. 常见问题解决方案 ##### 3.1 设备未被识别 如果设备未被 ADB 识别,可以尝试以下步骤: 1. 确保设备已启用“开发者选项”和“USB 调试模式”。 2. 重新插拔 USB 数据线。 3. 在命令行中运行 `adb kill-server` 和 `adb start-server` 来重启 ADB 服务。 ##### 3.2 安装失败 如果安装 APK 文件时出现错误,可以检查以下几点: 1. 确保 APK 文件与设备兼容。 2. 如果需要覆盖安装,使用 `-r` 参数。 3. 如果需要授权权限,使用 `-g` 参数。 ##### 3.3 权限问题 某些操作可能需要 root 权限。可以在设备上运行以下命令获取 root 权限: ```bash adb root ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值