App 运行页 「连接状态」为「已连接」,「目标」显示 ws://:<端口>/pose App 运行页 服务端返回 welcome 后出现「会话」ID App 运行页 「已发送」持续增长,「发送帧率」「识别帧率」大于 0 App 运行页 「人体识别」为「已识别」,出现骨架叠加(黄点好、红点置信度低) Windows 端 显示已连接并收到关键点,VRM 模型随动作实时动起来 7) 自检清单 ./gradlew testDebugUnitTest 预期:BUILD SUCCESSFUL,全部用例通过 报告:app/build/reports/tests/testDebugUnitTest/index.html bash build/build-apk.sh all 预期:debug 与 release 均显示 "OK ... APK",release 显示 "已签名(APK Signature Scheme v2)" $ANDROID_HOME/build-tools/34.0.0/apksigner verify app/build/outputs/apk/release/app-release.apk 预期:退出码 0(无输出即通过) adb install -r app/build/outputs/apk/debug/app-debug.apk 预期:Success 8) 常见问题 Q: 相机黑屏 / 一直提示需要相机权限 A: 权限被拒绝或已被永久拒绝,或相机被其他应用占用。在运行页点 「授予相机权限」;不再弹窗时到系统「设置 -> 应用 -> OpenDance -> 权限」 手动开启相机,并关闭占用相机的其它 App。 Q: 连不上 Windows 客户端 / 扫描不到主机 A: 核对 IP 与端口、确认客户端已启动并监听 8765、在 Windows 防火墙放行 OpenDance 的 TCP 8765 入站、确认手机与电脑同一 WiFi 且路由器未开 AP 隔离。 Q: 点「开始推流」闪退(或提示 MediaPipe 初始化失败) A: MediaPipe 原生库加载 / 静态初始化失败抛出的是 Error 子类 (UnsatisfiedLinkError、ExceptionInInitializerError),不是 Exception; 常见诱因是 ABI 不匹配(例如把只含 arm 的 release 包装到 x86 模拟器) 或模型资源缺失。处理:改用与设备 ABI 匹配的包(真机用 release、 模拟器调试用 debug);确认 APK 内含 assets/pose_landmarker_lite.task。 仓库已在 PoseDetector.initialize() 中 catch Throwable 兜底并把原因显示在 运行页;CrashLogger 会把未捕获堆栈写入应用私有目录,并在连接页展示,