Skip to content

Repository files navigation

WebAppForAndroid logo

WebAppForAndroid

面向测试与调试的 Android 设备 Web 控制台

Python Flask scrcpy

中文 · English

使用指南

WebAppForAndroid 供研发人员通过浏览器操作已开启 USB 调试的 Android 手机或平板,支持在 Windows、Linux、macOS 上运行。在页面上即可查看设备、管理应用、截图录屏,并用 scrcpy 做互动投屏;也可以把 AAB 签成可安装的通用 APK。

同一局域网内的浏览器均可打开控制台。启动后访问 http://<本机IP>:5001。

主界面


产品亮点

  • 浏览器即控制台 — 连接、刷新和日常操作都在网页完成,无需再记一套 ADB 命令。
  • 覆盖真机调试主路径 — 设备信息、应用安装与启停、截图、录屏、按键、重启和语言设置集中在同一页面。
  • USB 与无线调试 — 先用数据线接入,再在页面打开无线调试(端口 5555),同一 Wi-Fi 下可拔线继续操作。
  • 互动投屏 — 本机已有当前平台的 scrcpy 时直接使用;没有则在应用启动时从 官方 Release 下载对应包,缓存到 runtime/scrcpy/。
  • AAB 转 APK — 用本机证书或现场生成的随机证书,经 bundletool 打出 universal APK,并在浏览器中下载。

快速开始

环境: Python 3.10+ · Windows / macOS / Linux · 已开启 USB 调试并授权本机的真机。AAB 转化与随机证书另需 JDK(java 与 keytool 在 PATH 中)。

1. 安装依赖

# Windows
py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -U pip
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
# Linux / macOS
python3.12 -m venv .venv
./.venv/bin/python -m pip install -U pip
./.venv/bin/python -m pip install -r requirements.txt

运行依赖为 Flask、adbutils、psutil、Pillow。adb 使用 resources/re_adb 里按系统放好的 platform-tools:已在 PATH 中则直接用,否则解压到 resources/runpath/。项目内没有当前平台的 scrcpy 时,应用启动就会从官方 Release 下载,不等到点击投屏。

2. 启动控制台

# Windows
.\.venv\Scripts\python.exe web_function\app.py
# Linux / macOS
./.venv/bin/python web_function/app.py

服务监听本机局域网地址的 5001 端口,并尝试打开浏览器。日志:runtime/logs/android_app.log(首次运行会创建 runtime/logs/,单文件超过 10MB 后轮转,保留 5 个备份)。

3. 连接设备并开始使用

  1. 在设备上打开开发者选项,开启 USB 调试,并用数据线连接后点「允许 USB 调试」。
  2. 在页面点击 刷新设备,选择列表中的设备。
  3. 按页面分区操作:查看设备信息、管理应用、截图或录屏、模拟按键,或启用互动投屏。
  4. 需要无线调试时,先保持 USB 连接并点击 启用无线调试,确认手机与电脑在同一 Wi-Fi,再拔线。

已连接真机时,可用下面的脚本核对前台应用信息:

.\.venv\Scripts\python.exe tests\test_current_app.py

能力范围

区域 能力 说明
设备 列表、详情、打开网址、查看 IP 详情含型号、品牌、系统与 SDK、CPU、序列号;查看 IP 会在设备上打开查询页
剪贴板 发送文本、从设备读取 通过随仓库提供的 Clipper;设备未安装时会自动安装
应用 第三方包名列表、搜索、卸载、安装 APK / XAPK 支持单个或多个安装;可清缓存后启动,或强制停止
前台 当前包名与 Activity 需亮屏且有应用在前台
画面 截图、按秒录屏 截图写入 runtime/screenshot_and_record/mobile_screenshot/,录屏写入 runtime/screenshot_and_record/mobile_record/,均可在浏览器下载
按键 电源、HOME、菜单、返回、重启 电源键用于息屏 / 亮屏
连接 无线调试、scrcpy 互动投屏 无线调试使用 5555;投屏使用当前平台的 scrcpy,项目内没有时在应用启动时下载
系统 语言设置、XTest 打开系统语言页;XTest 会把 xtest-agent 推到 /data/local/tmp/ 后启动
包体 AAB 转 universal APK、随机证书、删除证书 依赖 runtime/aab_conversion/bundletool.jar 与 JDK;结果在浏览器中下载

核心能力

功能展示

设备与应用 — 刷新已连接设备,查看型号、系统版本和芯片信息,安装 APK 或 XAPK,卸载、强停,或清缓存后重新启动。

截图与录屏 — 亮屏时可截取当前画面。录屏在页面输入大于 1 秒的时长,结束后把 MP4 拉回本机供下载。锁屏状态下这两项都会失败。

按键、投屏与无线调试 — 模拟电源、HOME、菜单和返回,或重启设备。互动投屏打开 scrcpy 窗口,adb 使用 resources/re_adb 解出的可执行文件。停用投屏会结束本机的 scrcpy 进程。无线调试把设备切到 5555 并用 adb connect 接上。

剪贴板与 XTest — 文本经 Clipper 写入或读出设备剪贴板。启用 XTest 时,若设备上还没有 agent,会先推送 resources/apks/xtest-agent 并赋予可执行权限。

AAB 转化 — 选择已有证书或生成随机 JKS,上传 .aab 后用 bundletool 以 universal 模式签名并解出 APK。证书文件在 runtime/aab_conversion/certificate_folder/,别名与口令记在 certificate_var/certificate_var.json。


目录结构

web_function/
  app.py                Web 入口(监听本机局域网 5001)
  templates/            页面模板
  static/
    wcss/  wjss/        样式与脚本
    wresource/          图标
backend_function/
  adb_utils.py          设备操作、投屏、AAB、剪贴板与 XTest
  adb_setup.py          按平台从 resources/re_adb 准备 adb
  scrcpy_setup.py       按平台准备或下载 scrcpy
  paths.py              仓库根目录
resources/
  re_adb/               各平台 platform-tools 压缩包(随仓库提交)
  re_scrcpy/            仓库自带的 Windows scrcpy,可离线投屏
  apks/                 Clipper 与 xtest-agent(随仓库提交)
  runpath/              解压后的 adb(首次使用时生成)
runtime/
  logs/                 服务日志 android_app.log(首次运行时创建)
  scrcpy/               按当前平台下载的 scrcpy(不提交)
  screenshot_and_record/ 截图与录屏(首次使用时创建)
  aab_conversion/
    bundletool.jar      AAB 转化工具(随仓库提交)
    certificate_folder/ 签名证书(运行时写入)
    download_folder/    上传的 AAB(运行时)
    upload_folder/      转化得到的 APK(运行时)
tests/
  test_current_app.py   前台应用信息的手工检查
  test_scrcpy_setup.py  平台选择与 adb 解压的离线检查

页面路由在 web_function/app.py,设备与文件操作在 backend_function/adb_utils.py。


文档

文档 适合谁 说明
本文 新用户 安装、启动、能力范围
README_en.md English 英文说明
LICENSE 使用与再分发 MIT 许可

常见问题

列表里没有设备 — 确认数据线、USB 调试,以及设备上已点「允许」。然后点刷新。服务日志在 runtime/logs/android_app.log。

无线调试连不上 — 手机与电脑需在同一 Wi-Fi,且能读到 wlan0 地址。仍失败时,保持 USB 连接,在终端执行一次 adb tcpip 5555,再在页面上启用无线调试。

截图或录屏失败 — 设备需要亮屏解锁。录屏时长须大于 1 秒。文件保存在 runtime/screenshot_and_record/ 下,也可从页面下载。

剪贴板读写失败 — 同样需要亮屏。确认 resources/apks/clipper_1.0.0.apk 还在;未安装时控制台会尝试自动安装。

AAB 转化或随机证书失败 — PATH 中需要 java 和 keytool,且 runtime/aab_conversion/bundletool.jar 存在。转化前先在页面选中一张证书,或先点「生成随机签名」。

互动投屏打不开 — 确认本机能访问 GitHub Releases。已有匹配包时不会重复下载:Windows 可直接用 resources/re_scrcpy 里的 scrcpy,其它平台缓存在 runtime/scrcpy/。官方包目前提供 Windows、Linux x86_64、macOS(Intel 与 Apple Silicon)。停用投屏会结束名为 scrcpy 或 scrcpy.exe 的进程。adb 来自 resources/re_adb,与投屏包无关。


可选:打包为 exe

仓库中的 WebAppForAndroidDebugger.spec 已包含页面模板、静态资源、AAB 工具、自带 scrcpy 和 resources/。

.\.venv\Scripts\python.exe -m pip install pyinstaller
.\.venv\Scripts\python.exe -m PyInstaller WebAppForAndroidDebugger.spec

产物为 dist\WebAppForAndroidDebugger.exe。目标机器仍需能访问已开启 USB 调试的设备;做 AAB 转化时还需要本机 JDK。


许可

本项目采用 MIT License。

致谢

设备画面镜像基于开源项目 scrcpy。设备通信使用 adbutils 与 Android Debug Bridge。AAB 转 APK 使用 Google 的 bundletool。


本工具用于开发与测试调试。请只操作你有权调试的设备,并遵守所在地法律。

About

📱面向测试与研发的 Android 设备 Web 调试控制台--A cross-platform browser-based Android debugger for USB/wireless adb, app management, screenshots, scrcpy mirroring, and AAB-to-APK signing on Windows, Linux, and macOS.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages