Files
metin2-client/docs/ANDROID-TESTING.md

3.3 KiB
Raw Permalink Blame History

Android 原生客户端测试

当前 APK 由 android/build.sh 构建,使用 SDL3 + Vulkan;应用包名 org.metin2port.client,ABI 为 arm64-v8a,最低 API 24。

安装和资源

./android/build.sh [Debug|Release] [--launch]

构建完成后,如果有一台已授权的设备(多台时用 ANDROID_SERIAL 指定),脚本会:

  1. adb install -r 安装 APK;签名不一致(别的机器的 debug key)时卸载重装,应用数据随之清空。
  2. 运行 android/push-client.sh --locale zh,把资源同步到应用私有目录 files/Client。中文资源 build/zh-locale/Client 的输入(data/zh_40250、scripts/build_zh_locale.py、Client/pack/Index)有变化时先重新生成。
  3. 带 --launch 时唤醒手机并启动应用;锁屏状态下只提示解锁(锁屏启动会因 Vulkan surface 错误退出)。

没有设备时只构建 APK。其他选项:--no-deploy 只构建,--no-push 只安装,--locale XX 用 Client/locale_XX.cfg,--full-push 删除设备上的资源后全量重传。

资源同步是增量的:设备上的 files/Client/.mt_sync 记录上次写入的文件(大小、修改时间),之后只传新增和改动的文件,并删除本地已不存在的文件;第一次同步传完整的约 1.4 GB。只同步游戏资源(pack/、sound/、BGM/、channel.inf、locale*.cfg),应用自己写的设置和性能日志不会被覆盖或删除。单独同步资源:./android/push-client.sh [--locale zh] [--full] [--dry-run] [CLIENT_DIR]。

APK 本身包含 libmain.so、libSDL3.so、着色器和 Python 2.7 标准库,不包含 40250 客户端资源。

连服务器

adb shell am start -n org.metin2port.client/.MainActivity \
  --es args "--live-server HOST:AUTH_PORT:GAME_PORT --login-screen"

从桌面图标启动(不传参数)时连接 MainActivity.DEFAULT_ARGS 里的真服登录界面;显式传入不含 --live-server 的参数时运行进程内假服。测试真服前确认模拟器/设备能访问相应主机与端口。用 adb logcat 查看崩溃和启动错误。adb devices -l 没有设备时,先连接模拟器或开启真机 USB 调试。

更详细的构建依赖与命令见 src/host/README.md。

Mi 8 Lite / Adreno 512

2026-09-30 真机适配:绘制状态使用动态 uniform buffer,片元着色器按纹理混合和透明测试状态编译专用管线, 减少 Adreno 512 每个像素的存储读取和动态分支。Android 的默认场景分辨率仍为 75%、MSAA 2×,UI 保持屏幕分辨率。 此 GPU 首次启动默认使用省电模式(30 FPS);已保存的帧率设置和显式命令行参数优先,其他 GPU 不改变默认模式。

--generic-shaders(或 MT_GENERIC_SHADERS=1)保留 uniform buffer、关闭片元专用化,供诊断对比。 完整测量和画面对比见 Mi 8 Lite 适配记录。

可重复的分段性能测试(需已安装 APK 并同步资源):

ANDROID_SERIAL=<serial> python3 tools/perf/run_render_isolation.py build/qa/device-test \
  --sections baseline,terrain,baseline_repeat --render-scale 0.75 --msaa 2 --fps-cap 30

每段排除首个加载后的采样窗口,记录 6 个 2 秒窗口;输出 CSV、截图、内存快照和汇总 JSON,结束后恢复正常登录启动。