OpenBeam 是一个 Android 工具,用来把手机上的应用启动到外接显示器,并把手机屏幕当作触控板、键盘和导航控制器使用。项目基于 Kotlin、Jetpack Compose、Gradle 和 Shizuku。
- 检测 USB-C 显示器、转接器或其他 Android 外接显示设备。
- 搜索并选择手机上可启动的应用。
- 将选中的应用启动到外接显示器。
- 在手机上控制外接显示器里的应用:移动指针、点击、长按、拖动、滚动、输入文本、返回、主页和最近任务。
- 支持外接屏光标叠加显示,并可在控制时熄黑手机本机屏幕。
- 使用 Shizuku 执行需要更高权限的输入注入和外接显示启动操作。
项目仍处于早期阶段,目标是探索 Android 设备在外接显示器上的异步投屏和触控控制体验。不同 Android 厂商对外接显示、隐藏 API 和输入注入的兼容性可能不同。
- Android Studio:建议使用当前稳定版。
- JDK:17。Android Studio 自带的 JBR/JDK 17 一般可以直接使用。
- Android SDK:需要安装项目使用的
compileSdk,当前为 Android API 36 / 36.1。如果 Gradle Sync 提示缺少 SDK,按提示在 SDK Manager 中安装。 - Android 设备:Android 11 或更高版本,项目
minSdk为 30。 - Shizuku:运行应用时需要安装并启动 Shizuku。
- 外接显示设备:USB-C 显示器、扩展坞、采集卡或支持 Android 外接显示的转接方案。
项目已经提交 Gradle Wrapper,不需要单独安装 Gradle。
git clone https://github.com/your-name/OpenBeam.git
cd OpenBeam如果你是直接下载 ZIP,解压后进入项目根目录,也就是包含 settings.gradle.kts 和 gradlew.bat 的目录。
- 安装 Android Studio。
- 打开 Android Studio 的 SDK Manager。
- 安装 Android SDK Platform 36 / 36.1,以及 Android SDK Build-Tools。
- 确认 JDK 版本是 17。
可以在终端检查:
java -version输出里应该能看到 17。
Windows PowerShell:
.\gradlew.bat assembleDebugmacOS / Linux:
chmod +x ./gradlew
./gradlew assembleDebug第一次编译会下载 Android Gradle Plugin、Kotlin、AndroidX Compose、Shizuku 等依赖。项目已经配置了阿里云 Maven 镜像和官方仓库;如果下载失败,先检查网络、代理和 Android Studio 的 Gradle 设置。
编译成功后,Debug APK 位于:
app/build/outputs/apk/debug/app-debug.apk
如果已经配置 ADB:
adb install -r app/build/outputs/apk/debug/app-debug.apk也可以把 APK 传到手机上,通过系统文件管理器安装。Debug APK 适合本地测试,不建议作为正式发布包。
Release APK 需要本地签名文件。签名文件和密码不应该提交到 GitHub,本项目已经在 .gitignore 中排除了 signing/、keystore.properties、*.jks、*.keystore 等文件。
Windows PowerShell:
New-Item -ItemType Directory -Force signing
keytool -genkeypair -v -keystore signing/openbeam-release.jks -alias openbeam -keyalg RSA -keysize 2048 -validity 10000macOS / Linux:
mkdir -p signing
keytool -genkeypair -v -keystore signing/openbeam-release.jks -alias openbeam -keyalg RSA -keysize 2048 -validity 10000keytool 来自 JDK。如果命令找不到,先确认 Android Studio/JDK 的 bin 目录是否在 PATH 中。
用 keystore.properties.example 作为模板,在项目根目录创建本地的 keystore.properties:
storeFile=signing/openbeam-release.jks
storePassword=你的-keystore-密码
keyAlias=openbeam
keyPassword=你的-key-密码不要把真实密码写进 keystore.properties.example,也不要提交 keystore.properties。
Windows PowerShell:
.\gradlew.bat assembleReleasemacOS / Linux:
./gradlew assembleRelease编译成功后,Release APK 位于:
app/build/outputs/apk/release/app-release.apk
- 在手机上安装并启动 Shizuku。
- 按 Shizuku 的提示通过无线调试、ADB 或 Root 启动 Shizuku 服务。
- 连接外接显示器或 USB-C 显示转接器。
- 打开 OpenBeam,授予 Shizuku 权限。
- 选择外接显示器和要启动的应用。
- 点击
Launch,然后进入Touchpad页面控制外接屏上的应用。
如果外接光标无法显示,应用会尝试通过 Shizuku 授予悬浮窗权限。不同系统 ROM 可能仍需要在系统设置中手动允许悬浮窗。
Windows 使用 .\gradlew.bat,macOS / Linux 使用 ./gradlew。
./gradlew assembleDebug # 编译 Debug APK
./gradlew assembleRelease # 编译 Release APK
./gradlew test # 运行单元测试
./gradlew clean # 清理构建产物打开 Android Studio 的 SDK Manager,安装提示中的 Android SDK Platform 和 Build-Tools,然后重新执行编译命令。
确认终端使用的是 JDK 17。Android Studio 自带 JDK 的路径可以在 Settings > Build, Execution, Deployment > Build Tools > Gradle 中查看。
项目已配置阿里云 Maven 镜像、Google Maven、Maven Central 和 Gradle Plugin Portal。若仍失败,检查代理、DNS、公司网络限制或重新打开 Android Studio 触发 Gradle Sync。
确认手机和系统 ROM 支持外接显示输出,并且显示器或转接器已经连接成功。有些设备只支持镜像显示,或者限制应用启动到第二显示器。
先打开 Shizuku 应用,确认服务正在运行,再回到 OpenBeam 点击授权或绑定按钮。重启手机后通常需要重新启动 Shizuku。
欢迎提交 Issue 和 Pull Request。提交代码前建议先运行:
./gradlew test
./gradlew assembleDebug如果改动涉及外接显示、输入注入或 Shizuku 行为,请在 PR 中说明测试设备、Android 版本、Shizuku 启动方式和外接显示方案。
本项目采用 GNU General Public License v3.0 or later,SPDX 标识为 GPL-3.0-or-later。
GPLv3 是强 copyleft 协议:如果你分发基于本项目源码的修改版、衍生项目或 APK,需要按 GPLv3 或兼容方式提供对应源代码,并保留版权和许可证声明。仅在本地私下修改和使用,通常不触发分发源码的义务。
完整条款见 LICENSE。如果你需要对商业分发、闭源集成或合规边界做正式判断,请咨询专业法律意见。