adb-shell
A Python implementation of ADB with shell and FileSync functionality.
Decision gist · record as of 2026-08-14
Yes, with conditions. The package is stable, has no known vulnerabilities, and carries a permissive license. However, it is dormant (last release over a year ago), so install only if you need ADB protocol support in Python and can tolerate lack of active maintenance. High install friction (source-only distribution) is a minor friction point but not a blocker. Suitable for automation and testing workflows where you control the Android ecosystem.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires RSA key pair for authentication; USB support requires optional installation via pip install adb-shell[usb]; async support requires Python 3.7+ and pip install adb-shell[async].
- High install friction: the package ships as a source distribution with no prebuilt wheels in the standard index.
- Maintenance is dormant—last release was over a year ago (2023-09-01) and the last commit was 2024-10-29, indicating the project is not actively developed but remains available.
License · maintenance · safety
permissive license (permissive) — Licensed under Apache License 2.0 (permissive), which allows commercial and private use with minimal restrictions, making it safe to adopt from a licensing perspective.
last release 2023-09-01 (1078 days) · last repo commit 2024-10-29 · 606 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 128,383 downloads/mo, #11,712 on PyPI
Alternatives
Verify before relying
from adb_shell.adb_device import AdbDeviceTcp
from adb_shell.auth.sign_pythonrsa import PythonRSASigner
device = AdbDeviceTcp('192.168.0.222', 5555)
device.connect(rsa_keys=[signer])
response = device.shell('echo TEST')- Current compatibility with modern Android versions and ADB protocol revisions
- Whether dormant status affects reliability or security posture in active use
- Actual Python version support despite classifiers listing Python 2 and 3
What it is and what it does
adb-shell is a pure-Python implementation of the Android Debug Bridge protocol, allowing you to connect to and control Android devices programmatically from Python code. It supports both TCP connections (over network) and USB connections, and implements both the shell command interface and the FileSync protocol for file transfer. The package originated from Google's python-adb project and provides authentication via RSA keys.
The library is used primarily for automation, testing, and device management workflows where you need to execute shell commands on Android devices or transfer files without relying on the official ADB command-line tool. It has no runtime dependencies in its base form, though optional async and USB support can be added via extras. The project is dormant but stable, with no known security vulnerabilities.
Use it for
- Automate Android device testing by executing shell commands and capturing output programmatically
- Build device management tools that control multiple Android devices over a network
- Transfer files to and from Android devices as part of CI/CD or deployment pipelines
- Integrate Android device control into Python-based monitoring or orchestration systems
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, with conditions.
The package is stable, has no known vulnerabilities, and carries a permissive license. However, it is dormant (last release over a year ago), so install only if you need ADB protocol support in Python and can tolerate lack of active maintenance. High install friction (source-only distribution) is a minor friction point but not a blocker. Suitable for automation and testing workflows where you control the Android ecosystem.
Install
adb-shell on PyPI
Before you install
High install friction: the package ships as a source distribution with no prebuilt wheels in the standard index. Maintenance is dormant—last release was over a year ago (2023-09-01) and the last commit was 2024-10-29, indicating the project is not actively developed but remains available.
Requires RSA key pair for authentication; USB support requires optional installation via pip install adb-shell[usb]; async support requires Python 3.7+ and pip install adb-shell[async].
License in practice
Licensed under Apache License 2.0 (permissive), which allows commercial and private use with minimal restrictions, making it safe to adopt from a licensing perspective.
Quickstart
from adb_shell.adb_device import AdbDeviceTcp
from adb_shell.auth.sign_pythonrsa import PythonRSASigner
device = AdbDeviceTcp('192.168.0.222', 5555)
device.connect(rsa_keys=[signer])
response = device.shell('echo TEST')
Verify before relying
- Current compatibility with modern Android versions and ADB protocol revisions
- Whether dormant status affects reliability or security posture in active use
- Actual Python version support despite classifiers listing Python 2 and 3
Package facts
| License | permissive license permissive |
| Python support | Not specified |
| Install friction | High. Source build required |
| Runtime dependencies | None |
| Maintenance | Dormant 1,078 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 128,383 / month, #11,712 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: Apache Software LicenseOperating System :: OS IndependentProgramming Language :: Python :: 2Programming Language :: Python :: 3 |
Evidence: adb_shell-0.4.4.tar.gz
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “adb shell python”
- adb-shellImplements ADB (Android Debug Bridge) shell and FileSync protocol in…
- adbutilsadbutils is a Python library that communicates with Android devices…
- pure-python-adbPure-Python ADB client that communicates with an ADB server to…
Give your agent the search over MCP, or paste the wish link into any chat.
More Networking packages
h11 is a pure-Python HTTP/1.1 protocol implementation that handles parsing and serializing HTTP messages without any built-in I/O, letting you integrate it with any network layer you choose.
psutil retrieves real-time information about running processes and system resources (CPU, memory, disks, network, sensors) across multiple operating systems, enabling system monitoring, process profiling, and resource management.
pyOpenSSL wraps OpenSSL's SSL/TLS functionality for Python, providing high-level connection objects and certificate handling through a Python-friendly interface around OpenSSL's cryptographic operations.
uvloop is a drop-in replacement for Python's built-in asyncio event loop, implemented in Cython and using libuv, that accelerates async I/O operations.
execnet lets you spawn and communicate with Python interpreters across local processes, remote hosts, and different platforms, using a simple API for task distribution and inter-process messaging.
However, the aging maintenance status (275 days since last release) means you should verify it meets your concurrency and performance needs before committing to a…
PyZMQ provides Python bindings for ZeroMQ (ØMQ), a lightweight messaging library that enables fast, asynchronous communication between distributed processes and applications.
See also adbutils · pure-python-adb · androidtvremote2 · uiautomator2 · uiautomator · brainstem · binho-host-adapter · alibabacloud-adb20211201 · pyftdi · aiousbwatcher