首页 / 资讯中心 / 文章详情

Android DEX的逻辑引擎揭秘:为什么一个Java JAR能通过ADB Shell获得系统级能力

Android DEX的逻辑引擎揭秘:为什么一个Java JAR能通过ADB Shell获得系统级能力 ★ FEATURED ARTICLE
Android DEX的逻辑引擎揭秘为什么一个Java JAR能通过ADB Shell获得系统级能力【免费下载链接】Android-DexUniversal Samsung DeX alternative for all Android devices. Run Android apps on Windows, Linux macOS with resizable windows, advanced FPS gaming controls, and high-performance wireless ADB mirroring.项目地址: https://gitcode.com/gh_mirrors/an/Android-DexAndroid DEX 是一款支持 Windows、Linux 和 macOS 的安卓投屏与桌面应用启动工具它能以可缩放窗口运行安卓应用、支持 FPS 游戏控制和无线 ADB 镜像。它最精妙的设计就是那个无需安装的逻辑引擎——一个 Java JAR 包直接运行在 ADB Shell 之下从而获得系统级能力。这篇文章面向新手带你彻底看懂它的部署、启动与协作机制。从手机到桌面Android DEX 是什么一句话概括把你的安卓手机变成一块屏幕在电脑上以桌面窗口的方式运行里面的所有应用 ️它的核心能力包括可缩放窗口每个安卓应用一个独立桌面窗口像管理电脑软件一样管理 App高保真镜像基于 ADB scrcpy 通道低延迟无线投屏参见 doc/scrcpy.md游戏控制鼠标视角锁定、陀螺仪模拟、按键连点反作弊系统认不出任何模拟器痕迹系统控制音量、Wi-Fi、蓝牙、通知、媒体播放全部在桌面端操作三层架构一台电脑两个安卓组件Android DEX 的完整架构分为三层详见 doc/ARCHITECTURE.md层级形态运行环境职责第 1 层Windows 端Flutter 桌面应用电脑运行 UI、托管 4 个服务器、管理 ADB 生命周期第 2 层逻辑引擎Java JARADB Shell 上下文执行系统级指令音量、启动、熄屏等第 3 层功能中枢Kotlin APK安卓应用上下文持有权限通知监听、媒体会话、电量遥测一个反直觉的细节两个安卓组件都是主动连回电脑端的。电脑端是服务器安卓端是客户端——JAR 通过 TCP 连接回报jar.helloAPK 通过 WebSocket 回报apk.hello两条握手全部完成后桌面界面才解锁。为什么 Java JAR 能获得系统级能力这是整篇文章的核心问题。答案分三步。ADB Shell每台手机都有的系统级通道开启 USB 调试后任何电脑都可以通过 ADB 在手机上执行命令。关键在于这些命令运行在shell 用户权限下——这个级别足以直接调用AudioManager调节音量、用ActivityManager强制停止应用、控制屏幕亮灭甚至setenforce这类系统操作。普通应用做不到这些因为安卓的权限模型把第三方 APK 隔离在沙盒里而 ADB Shell 本身就是系统的一部分它天然拥有这些能力。app_process让手机运行任意 Java 程序的隐藏超能力安卓系统内置了app_process运行时。只要把一个 JAR 包推到手机的/data/local/tmp/目录再执行adb shell app_process这个 JAR 就会以 shell 权限、无需安装地在手机上跑起来。这就是逻辑引擎的部署方式电脑端检查本地androiddex.jar是否存在adb push上传到手机adb shell app_process ... JarMain启动JAR 反向连接电脑端的 TCP 服务器发送{type:jar.hello}握手没有安装器、没有权限弹窗、不留在应用列表里——它只是一个借道 shell 权限运行的后台进程。JAR vs APK为什么两者缺一不可能力JARADB ShellAPK应用上下文直接控制音量流、强杀应用✅❌ 受限屏幕唤醒/休眠、显示操作✅❌ 受限通知监听NotificationListenerService❌✅媒体会话MediaSessionManager❌✅电量广播接收器❌✅简单说JAR 负责动手执行系统操作APK 负责听消息获取需要注册权限才能拿到的数据。两者互补缺一不可。完整启动流程从 ADB 连到桌面解锁每次启动 Android DEX都会执行一条精确的初始化序列完整文档见 doc/BOOT_FLOW.md。启动界面有两条进度条分别追踪 JAR 和 APP 的部署状态阶段实际动作你在界面上看到什么0.02adb start-serverStarting ADB server…0.10adb connect连接设备Connecting to Android device…0.20adb reverse打通全部端口网络桥配置完成0.28电脑端绑定 4 个 TCP/WebSocket 服务器Starting local communication servers…0.38 → 0.82JAR 推送 app_process启动最慢的adb push就在这里JAR 进度条独立走 0 → 0.920.84阻塞等待jar.hello15 秒超时Background service connecting…0.93阻塞等待apk.hello15 秒超时Companion app connecting…1.00两条握手全部完成System ready ✓ 桌面解锁任何一步失败对应进度条会停在原地并弹出错误面板如果是连接问题可以直接打开设备选择器重选设备无需重启应用。逻辑引擎实战这些操作背后都是 JAR 在动手逻辑引擎承担的职责清单见 doc/ARCHITECTURE.md 第 2 层说明音量控制shell 级别直接访问AudioManager各音量流启动应用ActivityManager.startActivity()带前台标志强杀应用ActivityManager.forceStopPackage()屏幕唤醒/休眠直接调用PowerManager显示交互直接操作显示状态配合 APK 侧上行的遥测数据电量、Wi-Fi/蓝牙状态、通知、媒体元数据桌面端能实时镜像手机的全部系统状态。所有消息都是 JSON 协议由电脑端的状态仓库统一解析字段与消息类型一览见 doc/DATA_MODEL.md。这个设计为什么可信很多用户担心让一个 JAR 以 shell 权限运行是否安全。Android DEX 的回答是见 SECURITY.md100% 本地处理镜像、音频、输入、通知全部在电脑与手机之间直连无任何第三方中转零数据采集不收集按键、设备 ID、屏幕内容或遥测完全离线不连接任何云服务器断网也能工作无需 Root只使用 ADB 标准通道这正是 scrcpy 等开源工具赖以工作的同一套基础设施常见问题 FAQ需要 Root 吗不需要。ADB USB 调试即可JAR 借 shell 权限工作APK 走普通应用权限。JAR 会安装到手机里吗不会。它只是被推送到/data/local/tmp/的临时文件进程可随时kill重启后自动重新部署。支持无线吗支持。设备发现与切换USB 或 Wi-Fiip:5555由设备管理器自动处理文档见 doc/DEVICE_MANAGER.md。总结Android DEX 的聪明之处在于它精确地理解了安卓的权限边界能用 ADB Shell 解决的执行系统操作就用一个免安装的 Java JAR必须持有应用权限的监听通知与媒体就配一个 Kotlin APK。两个轻量组件通过 ADB 反向端口连回电脑端的四个服务器共同把一块手机变成了一台完整的桌面。想深入更多细节推荐按顺序阅读doc/ARCHITECTURE.md架构总览→ doc/BOOT_FLOW.md启动流程→ doc/MODULES.md模块参考→ doc/RECONNECTION.md断线自愈。【免费下载链接】Android-DexUniversal Samsung DeX alternative for all Android devices. Run Android apps on Windows, Linux macOS with resizable windows, advanced FPS gaming controls, and high-performance wireless ADB mirroring.项目地址: https://gitcode.com/gh_mirrors/an/Android-Dex创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站