Files
SimpleRemoter/android
yuanyuanxiang 5a1430e904 Feat: Android client device grouping with persistent group name
- szPCName sent as "model/groupName" format matching Linux client
- CMD_SET_GROUP handler updates g_SETTINGS.szGroupName in memory
- Group name persisted to filesDir/yama_group; survives process restart
- LoadGroupName() at startup overrides build-time patch value if file exists

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 17:38:01 +02:00
..

YAMA Android 客户端

YAMA 的 Android 客户端,允许服务端将 Android 设备作为受控主机进行远程查看和操控。功能包括:

  • 屏幕实时截图并推流给服务端
  • 接收服务端的触控/按键指令并注入到系统
  • 后台保持心跳连接,支持长期驻留

编译前:配置服务端地址

服务端 IP 和端口在源码中硬编码,编译前必须修改:

文件:app/src/main/java/com/yama/client/MainActivity.kt

private val serverIp   = "91.99.165.207"   // 改为你的服务端 IP
private val serverPort = 443                // 改为你的服务端端口

改完再执行编译,否则客户端连不上服务端。


编译环境

WSLUbuntu或原生 Linux 上编译Windows 原生环境不支持。

依赖 版本要求 安装命令
Java 17+ sudo apt install openjdk-17-jdk
CMake 3.22+ sudo apt install cmake
Ninja 任意 sudo apt install ninja-build
Android SDK 含 build-tools 见下方说明
Android NDK 30.xLinux 版) 见下方说明

Android SDK

推荐通过 Android Studio 安装,安装后 SDK 默认在:

  • Windows%USERPROFILE%\AppData\Local\Android\Sdk
  • Linux~/Android/Sdk

WSL 环境下脚本会自动检测 Windows 侧的 SDK也可以手动指定

export ANDROID_HOME=/mnt/c/Users/<用户名>/AppData/Local/Android/Sdk

Android NDKLinux 版)

重要:必须使用 Linux 版 NDKWindows NDK 的 .exe 工具无法在 WSL 内执行。

# 下载 Linux NDK约 600 MB
wget https://dl.google.com/android/repository/android-ndk-r30b-linux.zip
unzip android-ndk-r30b-linux.zip -d $HOME

# 解压目录名可能带字母后缀r30、r30b 等),统一重命名
mv $HOME/android-ndk-r30* $HOME/android-ndk

脚本会自动检测 ~/android-ndk,也可以通过环境变量指定:

export ANDROID_NDK_HOME=$HOME/android-ndk

签名密钥(一次性准备)

Release APK 需要签名密钥。密钥库文件 yama-release.jks 已在仓库中,密码需向仓库维护者获取,或通过以下方式传入:

# 方式一:环境变量(推荐,避免每次输入)
export YAMA_PWD=密钥库密码

# 方式二:编译时脚本会交互提示输入

如需重新生成密钥库(密码遗失等情况):

cd android/
keytool -genkeypair -keystore yama-release.jks \
  -alias yama -keyalg RSA -keysize 2048 -validity 10000 \
  -dname 'CN=YAMA,O=Internal,C=CN'

密钥库文件本身不含私密信息,可以提交到 git密码不要提交。 重新生成密钥库后,已安装旧版本的设备需要先卸载再安装。


编译

在 WSL 或 Linux 终端中,进入 android/ 目录:

cd android/

# 编译 Release默认约 1.7 MB推荐部署用
./build_apk.sh

# 编译 Debug约 4 MB含调试符号开发排查用
./build_apk.sh debug

# 清理所有编译产物(切换配置或遇到奇怪错误时使用)
./build_apk.sh clean

编译成功后产物:

类型 路径
Release ghost.apk
Debug ghost-debug.apk

安装到设备

1. 传输 APK

ghost.apk 拷贝到手机USB 传输、微信文件传输等均可)。

2. 安装

在手机上用文件管理器找到 APK点击安装。

如提示"禁止安装未知来源应用",需先开启允许:

  • Android 8+:设置 → 应用 → 找到你使用的文件管理器 → 允许安装未知应用
  • MIUI/ColorOS 等:设置 → 隐私/安全 → 安装未知应用

3. 解除受限设置Android 13+ 必须)

Android 13 及以上系统对手动安装的 APK 有额外限制,若不解除,无法授权 Accessibility Service

  1. 打开 设置 → 应用 → YAMA
  2. 点击右上角 三点菜单
  3. 选择 "允许受限设置"Allow restricted settings
  4. 使用 PIN 或指纹确认

此步骤每次重新安装 APK 后都需要重复执行一次。

4. 授权必要权限

Accessibility Service(必须,用于注入触控/按键)

设置 → 无障碍 → 已安装的应用 → YAMA → 开启

重装 APK 后此权限会被重置,需重新授权。

5. 启动

点击桌面 YAMA 图标启动,系统会弹出屏幕录制确认框,点击 "立即开始" 授权。

授权后应用进入后台运行,通知栏会显示一条持久通知表示服务正在运行。此后服务端即可在主机列表中看到该设备。

屏幕录制确认在每次应用重启后都会弹出,这是 Android 系统的强制要求,无法跳过。


注意事项

  • 建议在电池优化设置中将 YAMA 设为 "不限制"(或"不优化"),防止系统在后台将其杀掉
    • 路径:设置 → 应用 → YAMA → 电池 → 不限制
  • 心跳间隔最小 30 秒,长期后台运行耗电量与微信后台相当
  • 服务端可在设置中调大上报间隔(建议不超过 60 秒)以进一步降低耗电