radb
A Rust implementation of openatx/adbutils —— a library for interacting with Android devices using ADB (Android Debug Bridge).
📌 项目简介
radb 是一个基于 Rust 实现的 ADB 工具库,灵感来源于 Python 的 adbutils,旨在为开发者提供简洁、高效且类型安全的方式来与 Android 设备进行交互。
该库支持同步和异步两种模式,并封装了常用的 ADB 操作命令,如设备管理、文件传输、shell 命令执行、日志抓取等。
🚀 快速开始
添加依赖
在你的 Cargo.toml 文件中添加以下内容以引入 radb:
[]
= "0.1.7"
示例代码
获取设备列表(blocking,默认)
#
#
获取设备列表(Tokio async)
#
#
✅ 支持的功能
| 功能 | 描述 |
|---|---|
| ✅ 设备管理 | 列出连接的设备、获取设备状态、通过序列号或 transport ID 获取设备 |
| ✅ ADB Server 控制 | 获取版本、启动/关闭 server、连接/断开设备 |
| ✅ Shell 执行 | 在设备上运行 shell 命令 |
| ✅ 文件操作 | 推送文件到设备、从设备拉取文件、列出目录内容 |
| ✅ 网络控制 | 设置 TCP/IP 模式、端口转发和反向端口转发 |
| ✅ UI 自动化 | 模拟点击、滑动、按键事件 |
| ✅ 应用管理 | 安装、卸载应用 |
| ✅ 日志抓取 | 实时获取设备日志(logcat) |
| ✅ 截图 | 抓取设备屏幕截图 |
| ✅ 设备控制 | 开关屏幕、切换飞行模式、Wi-Fi 等 |
🔧 特性开关(Features)
radb 提供以下特性开关供选择使用:
blocking:启用同步 API(默认)tokio_async:启用异步 API 支持(需要配合tokio运行时)
你可以根据需求选择启用不同的特性:
[]
= "0.1.7"
= ["tokio_async"]
blocking 和 tokio_async 不能同时启用。两套 public API 共享同一套 ADB 命令构造、响应解析和 sync 文件传输核心;区别只在连接、读写和 await 适配层。AdbClient::default() 和 AdbClient::new(...) 仍保留兼容,但连接失败会 panic;新代码建议使用 AdbClient::connect(...)。
🧪 测试
默认测试不需要真机:
cargo test --lib
cargo test --test protocol_regressions
cargo test --no-run
真机集成测试需要显式设置 RADB_TEST_SERIAL:
$env:RADB_TEST_SERIAL="emulator-5554"
cargo test --test blocking_integration
cargo test --no-default-features --features tokio_async --test async_integration
未设置 RADB_TEST_SERIAL 时,真机测试会直接跳过。
📦 文档
完整的 API 文档请查看 docs.rs/radb。
📦 Crates 链接
🛠 贡献
欢迎提交 PR 或 issue!如果你有新功能建议或发现了 bug,请随时提出。
📄 许可证
该项目采用 MIT 协议开源。详情请参阅 LICENSE 文件。