Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ADB PRO — Advanced Phone Management & Diagnostics Suite

A bilingual (English / العربية) PyQt5 desktop application for managing and diagnosing Android devices over ADB (Android Debug Bridge). Dark-themed, modular, and built around a background worker thread so long-running adb commands never freeze the UI.

Features

Diagnostics & info

  • Deep device diagnostics — identity, CPU, RAM, storage, battery, display, sensors
  • Quick info panel and live logcat viewer

Media

  • Screenshot capture
  • Screen recording (configurable duration)
  • Screen mirroring & control via scrcpy — keep-screen-off, always-on-top, and max-FPS options, launched detached so the app never blocks

Files & apps

  • Visual File Manager — browse the device's filesystem (QListWidget), navigate into folders, go up a directory, then push/pull files and folders
  • Install APK
  • App package listing and uninstall

Connectivity

  • Wireless ADB — a 3-step USB → Wi-Fi flow: enable TCP/IP mode (adb tcpip 5555), auto-detect the device's Wi-Fi IP (ip route / ip addr show wlan0), then connect over the network — with clear diagnostics for the two most common failure causes (network/AP isolation timeouts, and Windows Firewall/antivirus blocking outbound socket access)

Device control

  • Power/reboot controls (reboot, recovery, bootloader, power button)
  • Full backup (adb backup)
  • Factory reset (with a typed confirmation guard)

UI

  • Full bilingual support (English / Arabic), including RTL layout mirroring
  • Dark theme applied consistently across every widget, including checkboxes and inputs

Project structure

The app follows an MVC-style separation: ui/ only builds widgets and wires signals/slots, core/ and tasks/ own all adb/subprocess/filesystem logic, and config/ owns everything presentational that isn't code (translations, stylesheet).

main.py                    # Entry point — creates QApplication and MainWindow

config/
  texts.py                 # TEXTS: all bilingual (en/ar) UI strings
  style.py                 # STYLE_SHEET: the app's dark Qt stylesheet

core/                       # Low-level primitives — no PyQt5 imports here
  adb.py                    # run_cmd(), check_device(), getprop()
  worker.py                 # Worker(QThread): runs a task_* function off the UI thread
  scrcpy.py                 # scrcpy detection + detached, non-blocking launch

tasks/                      # One function per background operation.
  adb_tasks.py               # Each task_*(log, ...) runs inside a Worker and
  wireless_tasks.py          # returns a result dict; `log` reports progress
  file_manager_tasks.py      # back to the UI via a Qt signal.

ui/
  main_window.py            # MainWindow: sidebar nav + one page per feature

Adding a new feature means: add background logic as a task_* function in tasks/, add any bilingual strings to config/texts.py, then add a _build_x_page() + handler methods in ui/main_window.py. The UI never calls adb/subprocess directly — it only calls core/tasks functions through a Worker.

Prerequisites

  • Python 3.8+ (developed against 3.12)
  • adb available on your system PATH
  • scrcpy on PATH (optional — only needed for the Screen Mirroring tab; the app detects if it's missing and shows a clear error instead of crashing)
  • USB debugging enabled on the Android device (Developer Options)

Setup

python -m venv venv
.\venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install PyQt5 pyinstaller pillow

Run

.\venv\Scripts\Activate.ps1
python main.py

Run main.py from the project root — it's the entry point. Launching a file inside ui/, core/, or tasks/ directly (e.g. python ui\main_window.py) will fail with ModuleNotFoundError: No module named 'config', because Python only puts a directly-run script's own folder on sys.path, not the project root where the sibling packages live.

Build a single-file Windows EXE

.\venv\Scripts\pyinstaller.exe --clean --onefile --windowed --name "ADB_PRO" --icon "icons8-android-24.ico" main.py

PyInstaller follows the import graph from main.py, so config/, core/, tasks/, and ui/ are bundled automatically — no extra --add-data or --paths flags needed as long as you build from the project root.

To debug a startup crash in the packaged EXE, build with a console attached:

.\venv\Scripts\pyinstaller.exe --clean --onefile --console --log-level DEBUG --name "ADB_PRO_debug" --icon "icons8-android-24.ico" main.py
.\dist\ADB_PRO_debug.exe

Troubleshooting

  • ModuleNotFoundError: No module named 'config' — you ran a file inside a subpackage directly instead of main.py from the project root. See the note under Run above.
  • EXE opens a console when clicking buttons — child adb processes are launched with subprocess.CREATE_NO_WINDOW on Windows (core/adb.py, core/scrcpy.py); rebuild after pulling the latest code.
  • Wireless ADB: "Wi-Fi connection failed: timeout" — the PC never got a response from the phone's IP. Almost always means the phone and PC aren't actually on the same network/subnet, or the Wi-Fi network blocks device-to-device traffic (common on office/campus/guest Wi-Fi, "AP/client isolation"). Try a personal hotspot or home router instead.
  • Wireless ADB: error 10013 ("forbidden by its access permissions") — a Windows-level socket block, not a network isolation issue. Check Windows Firewall (an outbound rule for adb.exe, not just inbound), any third-party antivirus's own firewall, and whether a VPN client is active — VPNs frequently block direct LAN connections unless you enable a "local network access" / split-tunneling option.
  • Screen Mirroring says scrcpy wasn't found — install scrcpy and make sure it's on PATH (test with scrcpy --version in a terminal).
  • Icon error about PNG format during PyInstaller build — install pillow, or convert the icon to .ico first.

Notes

  • The packaged EXE bundles Qt platform plugins; if it fails to start, make sure antivirus/Windows Defender isn't blocking its temporary extraction.
  • ADB_PRO.py is the original single-file version of this app, kept in the repository for reference; it is no longer maintained — all development happens in the modular main.py + config//core//tasks//ui/ layout described above.

Updated: 2026-07-21

About

ADB PRO is a PyQt5 desktop application for managing Android devices via ADB (Android Debug Bridge). This repository contains the application code and packaging instructions for Windows.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages