2024-10-10 16:41:16 +02:00
|
|
|
<p align="center" style="text-align: center">
|
|
|
|
|
<img src="assets/logo.png" width="33%">
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p align="center">
|
|
|
|
|
<p align="center">Android Debug Bridge (ADB) client implementation in pure Rust !</p>
|
|
|
|
|
<p align="center">
|
|
|
|
|
<a href="https://crates.io/crates/adb_client">
|
|
|
|
|
<img alt="crates.io" src="https://img.shields.io/crates/v/adb_client.svg"/>
|
|
|
|
|
</a>
|
2025-08-03 17:31:24 +02:00
|
|
|
<a href="https://crates.io/crates/adb_client">
|
2025-08-03 17:38:11 +02:00
|
|
|
<img alt="msrv" src="https://img.shields.io/crates/msrv/adb_client"/>
|
2025-08-03 17:31:24 +02:00
|
|
|
</a>
|
2024-11-29 13:30:03 +01:00
|
|
|
<a href="https://github.com/cocool97/adb_client/actions">
|
|
|
|
|
<img alt="ci status" src="https://github.com/cocool97/adb_client/actions/workflows/rust-build.yml/badge.svg"/>
|
|
|
|
|
</a>
|
2024-10-10 16:41:16 +02:00
|
|
|
<a href="https://deps.rs/repo/github/cocool97/adb_client">
|
|
|
|
|
<img alt="dependency status" src="https://deps.rs/repo/github/cocool97/adb_client/status.svg"/>
|
|
|
|
|
</a>
|
2024-11-17 18:16:20 +01:00
|
|
|
<a href="https://opensource.org/licenses/MIT">
|
|
|
|
|
<img alt="dependency status" src="https://img.shields.io/badge/License-MIT-yellow.svg"/>
|
|
|
|
|
</a>
|
2024-10-10 16:41:16 +02:00
|
|
|
</p>
|
|
|
|
|
</p>
|
2022-01-05 20:41:23 +01:00
|
|
|
|
2024-10-25 18:09:41 +02:00
|
|
|
Main features of this library:
|
2022-01-07 21:48:50 +01:00
|
|
|
|
2024-10-25 18:09:41 +02:00
|
|
|
- Full Rust, don't use `adb *` shell commands to interact with devices
|
2024-11-29 13:30:03 +01:00
|
|
|
- Supports
|
|
|
|
|
- Using ADB server as a proxy (standard behavior when using `adb` CLI)
|
|
|
|
|
- Connecting directly to end devices (without using adb-server)
|
|
|
|
|
- Over **USB**
|
|
|
|
|
- Over **TCP/IP**
|
2024-10-25 18:09:41 +02:00
|
|
|
- Implements hidden `adb` features, like `framebuffer`
|
2022-05-19 21:58:19 +02:00
|
|
|
- Highly configurable
|
2025-01-22 15:22:36 +01:00
|
|
|
- Provides wrappers to use directly from Python code
|
2022-05-19 21:58:19 +02:00
|
|
|
- Easy to use !
|
|
|
|
|
|
2024-09-05 16:53:23 +02:00
|
|
|
## adb_client
|
2022-05-19 21:58:19 +02:00
|
|
|
|
2024-11-29 13:30:03 +01:00
|
|
|
Rust library implementing both ADB protocols (server and end-devices) and providing a high-level abstraction over the many supported commands.
|
2022-01-05 20:41:23 +01:00
|
|
|
|
2024-11-29 13:30:03 +01:00
|
|
|
Improved documentation available [here](./adb_client/README.md).
|
2022-01-05 20:41:23 +01:00
|
|
|
|
2025-12-26 12:06:16 +01:00
|
|
|
## examples
|
|
|
|
|
|
|
|
|
|
Some examples showing of to use this library are available in the `examples` directory:
|
|
|
|
|
|
|
|
|
|
- `examples/mdns`: mDNS device discovery
|
|
|
|
|
|
2024-09-05 16:53:23 +02:00
|
|
|
## adb_cli
|
2022-05-19 21:58:19 +02:00
|
|
|
|
2024-11-29 13:30:03 +01:00
|
|
|
Rust binary providing an improved version of Google's official `adb` CLI, by using `adb_client` library.
|
2025-01-22 15:22:36 +01:00
|
|
|
Provides a "real-world" usage example of this library.
|
2022-04-08 21:54:11 +02:00
|
|
|
|
2024-11-29 13:30:03 +01:00
|
|
|
Improved documentation available [here](./adb_cli/README.md).
|
2022-01-05 20:41:23 +01:00
|
|
|
|
2025-01-22 15:22:36 +01:00
|
|
|
## pyadb_client
|
|
|
|
|
|
|
|
|
|
Python wrapper using `adb_client` library to export classes usable directly from a Python environment.
|
|
|
|
|
|
|
|
|
|
Improved documentation available [here](./pyadb_client/README.md)
|
|
|
|
|
|
2024-10-10 16:41:16 +02:00
|
|
|
## Related publications
|
|
|
|
|
|
|
|
|
|
- [Diving into ADB protocol internals (1/2)](https://www.synacktiv.com/publications/diving-into-adb-protocol-internals-12)
|
2024-12-18 08:34:31 +01:00
|
|
|
- [Diving into ADB protocol internals (2/2)](https://www.synacktiv.com/publications/diving-into-adb-protocol-internals-22)
|
2024-10-10 16:41:16 +02:00
|
|
|
|
2024-10-25 18:09:41 +02:00
|
|
|
Some features may still be missing, all pull requests are welcome !
|