python tools/quality/check_resources.py
python tools/quality/check_project.py
python -m compileall -q tools
./gradlew --no-daemon clean testDebugUnitTest lintDebug assembleDebugWindows 可使用 .\gradlew.bat。
日常本机加速(仅 Debug / 真机):
# 推荐:gradle.local.properties 中 hzzs.native.abis=arm64-v8a
$env:CMAKE_BUILD_PARALLEL_LEVEL = '2'
.\gradlew.bat -Phzzs.native.abis=arm64-v8a :app:assembleDebug完整 ABI 与 CI 门禁不要传该参数。若配置阶段每次都很慢,检查 %GRADLE_USER_HOME%\gradle.properties 是否强制关闭了 configuration-cache(应删除/注释 org.gradle.configuration-cache=false)。仓库 gradlew/gradlew.bat 默认会 -Dorg.gradle.configuration-cache=true 覆盖用户级 false;调试用户关闭时设 HZZS_ALLOW_USER_CC_OVERRIDE=1。CMAKE_BUILD_PARALLEL_LEVEL 在 wrapper 未设置时默认为 2。
- 产品使用 Hilt + KSP(不再 kapt stub 双编译)。
- 堆与 worker 按「低内存开发机 + IDE 共存」写在根
gradle.properties;Kotlin 编译器使用in-process,不启动独立 Kotlin daemon。 - VS Code 的 Gradle 任务使用命名互斥锁;已有构建运行时不要重复触发。
- 若出现
classpath-snapshot/shrunk-classpath-snapshot.bin找不到、IC 回退全量、multiple Kotlin daemon sessions,或Gradle build daemon has been stopped: stop command received:
# 停 daemon + 清 Kotlin/KSP IC;空闲内存尚可时再加 -Compile
.\tools\dev\repair_gradle_kotlin_cache.ps1 -Compile
# 或手动单次构建;Kotlin 编译仍在 Gradle 进程内执行
.\gradlew.bat --no-daemon --console=plain :app:compileDebugKotlin- 可用物理内存 < ~1.5 GiB 时先关多余语言服务 / 浏览器,再构建;全量
:app:testDebugUnitTest易 OOM,优先相关--tests。 - 项目默认
ksp.incremental=true;缓存损坏时不要永久关增量,运行上述修复脚本重建缓存。
Release(需签名配置,见 README「Release 构建与签名」):
./gradlew --no-daemon :app:testDebugUnitTest :app:lintRelease :app:assembleRelease缺少 keystore 路径/密码/alias 时 assembleRelease 必须失败;不得静默使用 debug 签名发布。
| 脚本 | 作用 |
|---|---|
tools/quality/check_resources.py |
资源 XML、图标、赞赏图等静态检查 |
tools/quality/check_project.py |
单模块架构、manifest 导出面、MCP loopback、AUTO 不升权等不变量 |
位于 app/src/test/java/,至少覆盖:
GestureArbiter/ActionCommitLedgerVisionResultValidator- 设置会话预览丢弃与自动化 fail-closed
- 主题包编解码与恶意字段
- 帧序号与像素池分代租约
运行:
./gradlew :app:testDebugUnitTestbash tools/vision/build_host.sh
python tools/vision/run_host_tests.py --dataset /path/to/images --max-representative 48
bash tools/vision/run_native_sanitizers.sh
python tools/vision/evaluate_dataset.py --dataset /path/to/images --output build/vision-resultsWindows 可改用 tools/vision/build_host.ps1。Python 入口(run_host_tests / evaluate_dataset / batch_recognize)通过 host_build.py 自动选 bash 或 PowerShell 构建,不要对无执行位的 .sh 直接 subprocess([script])。
说明:
- 宿主机测试参数是
--max-representative,不是--limit。 - 数据集路径也可通过环境变量
HZZS_TEST_DATASET或目录test_images/、.test-data/提供。 - 无人工真值时只报告稳定性与耗时,不报告准确率。
app/src/test/cpp/native_tests.cpp 由 sanitizer 脚本编译运行(须链接 sea_salt_living_room.cpp、vision_v3/* 等并与 CMakeLists.txt 保持同一源清单;含 scene 0..kSceneCount-1 边界与 DetectionSource 数值协议断言)。Windows/MSYS 保留 ASan/UBSan,但因平台不支持 LeakSanitizer 而仅关闭 detect_leaks;Linux CI 继续开启泄漏检测。
最低覆盖 API 24、26、28、30、33、35:
- 冷启动 / 热启动 / 旋转 / 深浅主题 / 进程恢复
- 权限允许与拒绝
- MediaProjection 取消
- 无障碍断开
- 悬浮窗权限撤销
- 重复启动停止与低内存恢复
厂商 ROM、Root、Shizuku 与真实游戏链路必须使用对应真机验证。
python -m unittest discover -s tools/algorithm/tests -v
python tools/algorithm/validate_algorithm_pack.py --source algorithm-packs/official-bamboo-baseline
python tools/algorithm/publish_algorithm_release.py \
--source algorithm-packs/official-bamboo-baseline \
--work-dir build/algorithm-release \
--private-key /secure/algorithm-ed25519.pem \
--key-id hzzs-algorithm-official-1默认 publish_algorithm_release.py 为 dry-run(不访问网络)。真实发布需显式 --execute,并配置独立 Secrets:ALGORITHM_SIGNING_PRIVATE_KEY_B64、ALGORITHM_SIGNING_KEY_ID(不得复用 APK keystore)。
覆盖:可重复构建、签名/篡改、路径穿越、Zip 炸弹模拟、超大文件、禁止扩展名、stable/beta 隔离、撤销标记、Gitee 不可变同步。详见 docs/ALGORITHM_SYSTEM_V1.md。
.github/workflows/build.yml:质量脚本 → Native sanitizer / host tests → Gradle 测试 / lint / debug APK。
.github/workflows/release.yml:签名构建、验签、差分补丁、双源发布与匿名哈希校验。
.github/workflows/algorithm-release.yml:官方算法包校验、签名、双源同步与目录发布(默认 dry-run)。
在缺少独立人工边界标注前,不得在文档、Issue 或发布说明中宣称:
- 99% 准确率
- 全机型覆盖
- 固定像素误差达标