Files
kiosk/docs/汉秋_代码优化完成记录_2026-09-20.md
T

87 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 代码优化完成记录
- 姓名 / 角色 / 项目:汉秋 / Android 开发 / KIOSK(照片打印机)
- Git:`ssh://git@gitea.zhifly.cn:2222/lujiuyin/kiosk.git`
- 开始日期 / 实际完成日期:2026-09-20 / 2026-09-20(本轮代码与工程检查完成)
- 状态:**待验收**;设备功能与团队迁移确认尚未完成,不能据此宣称整项迁移或业务验收通过。
- 工作分支:`codex/kiosk-cleanup`;本轮未推送远程。
- 优化前提交:`835d6ecd009ba9a607966e8b3340b840ea3b7d8a`
- 工程检查修复提交:`5fe95f9`
- 优化后实现提交:`e6b671ef7671820de08ec5df4557c4f2a5618ada`;本记录及证据另行提交。
## 做了什么(A–G)
| 项目 | 本轮结果 |
| --- | --- |
| A 基线 | 实测 Debug 构建、单测、Lint、受跟踪文件大小、Git 文件大小及 APK 大小。修改前构建和 44 项单测通过,Lint 因 4 个错误失败。 |
| B 资源 | 删除 69 个资源名对应的 142 个无引用位图文件,合计 3,191,460 字节(3.044 MiB);覆盖同名分辨率变体,无有损压缩。 |
| C 引用与依赖 | 对照本次 Lint 候选,检查代码、XML、Manifest、测试、构建配置和解包后的本地 JAR/AAR/SO 字符串。删除 Crashlytics buildtools 运行时依赖及其版本目录两项;前后依赖树仅减少该条目。 |
| D 代码 | 未做业务代码删除或结构重构。缺少业务用途证据的模块继续保留;未修改任何对外接口、打印协议及数据库结构。 |
| E 工程质量 | Wrapper 改为 LF,新增限定 Wrapper 的换行规则;两处函数显式接受 Media3 不稳定 API;修正设备测试旧包名断言;定向处理 Glide NotificationTarget 的库告警。 |
| F 杂物与文档 | 已检查,无额外确证无用文档需删除。保留现行说明、审查日志、验证截图、必要 SDK 和签名材料;新增本记录和审计证据。未清缓存冒充瘦身。 |
| G Git 与迁移 | 确认本地 origin 已为 Gitea;保存两批实现提交。删除分支 0 个,未重写历史、未强推、未回收历史空间。读写权限、服务器和流水线迁移未验证。 |
资源删除依据及保留项见 [资源审计清单](verification/cleanup-2026-09-20/resource-audit.json)。
`ic_face_large`、`ic_upload_large` 虽在 Lint 候选中,但源码仍有名称出现,因此保留;其他 XML/values 资源和用途不明的代码不按静态告警直接删除。剩余 161 项 UnusedResources 需后续逐项确认。
通知检查处理:源码未发现 NotificationTarget、系统通知发送或 startForeground 调用;Glide 用于图片显示。`app/lint.xml` 只匹配包含完整 NotificationTarget 类名的 NotificationPermission 消息,不全局禁用权限检查,也不新增无实际用途的通知权限。若未来接入系统通知,需要删除该豁免并实现权限流程。
## 前后对比
MiB = 1,048,576 字节。前后均使用本机 JBR 21.0.11、Gradle 8.11.1、AGP 8.10.0、Kotlin 2.1.10,离线依赖缓存、相同 Debug 配置及现有 ABI/签名设置;未开启 R8 或资源压缩。
| 指标 | 优化前 | 优化后 | 说明 |
| --- | ---: | ---: | --- |
| 受跟踪文件内容大小(MiB) | 100.120 | 97.077 | 后值为实现提交 e6b671e,含工程规则、不含随后新增交付文档;排除 .git、未跟踪文件及构建缓存。 |
| Git 文件内容合计(MiB) | 60.121 | 60.037 | 后值采于实现提交后、交付文档提交前;Git 元数据会波动,不作为瘦身收益。未回收历史空间,待管理员回收复测。 |
| Debug APK(MiB) | 158.132 | 150.167 | 减少 7.965 MiB,约 5.04%。 |
| 删除文件数 | — | 142 | 全部为位图资源;新增交付证据另计。 |
| 删除分支数 | — | 0 | 旧分支未处置。 |
| Lint 错误 / 警告 / 提示 | 4 / 329 / 8 | 0 / 257 / 8 | 剩余警告保留,不设置全量 baseline 屏蔽。 |
| 单元测试 | 44 通过 | 44 通过 | 失败、错误、跳过均为 0。 |
APK 字节数分别为 165,813,803 和 157,461,968;以上比较使用构建输出 metadata 对应 APK,避免混用历史包。Release 包未测,本轮结果不代表 Release 收益。
## 验证结果与复现
优化前命令(绕过已确认的 CRLF shell 入口问题):
```sh
java -classpath gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain :app:assembleDebug :app:testDebugUnitTest :app:lintDebug --offline --console=plain
```
每批及最终检查使用:
```sh
./gradlew :app:assembleDebug :app:testDebugUnitTest :app:lintDebug :app:assembleDebugAndroidTest --offline --console=plain
./gradlew :app:dependencies --configuration debugRuntimeClasspath --offline --console=plain
```
最终构建 **BUILD SUCCESSFUL**,92 个任务执行;不是 clean build。Debug APK、Android 测试 APK 均构建成功,44 项单测全部通过,Lint 无错误,`git diff --check` 通过。前后依赖树无无法解析的依赖,差异仅为移除 buildtools。
本机 `adb devices` 无连接设备,因此**未运行设备测试、启动和页面导航、首页、人脸/最近照片、购片、海报播放或物理打印验证**。设备测试 APK 可编译不等于设备测试通过。
验证证据:
- [优化前构建日志](verification/cleanup-2026-09-20/baseline-gradle.log)
- [第一批工程修复验证](verification/cleanup-2026-09-20/quality-gradle.log)
- [最终构建日志](verification/cleanup-2026-09-20/final-gradle.log)
- [验证结果与统计](verification/cleanup-2026-09-20/verification-summary.json)
- [前依赖树](verification/cleanup-2026-09-20/dependencies-before.txt) / [后依赖树](verification/cleanup-2026-09-20/dependencies-after.txt)
- [资源审计脚本](verification/cleanup-2026-09-20/resource-audit.py):只读,需在基线文件集合上执行;[本次候选快照](verification/cleanup-2026-09-20/baseline-unused-resources.xml)仅保留候选名称,完整原始报告可由基线命令重建。
初次受限环境无法写入 Gradle 缓存,取得执行权限后重新完成验证;此项为环境限制,不是工程缺陷。
## 还剩什么
- 连接目标设备后执行上述核心功能和设备测试,复核通过再将状态改为“完成”。
- 257 项 Lint 警告和 Room schema 导出配置等既有问题保留;没有为了本轮指标关闭检查。
- 打印终态、订单回执、WebSocket 生命周期、下载内存上限、数据库迁移等见现有工程审查报告,不属于本轮改造。
- 现有受跟踪签名材料和固定认证配置保持原状;需协调现网升级兼容及凭证管理后处理,文档不复制密码。
- Gitea 本地远程配置已确认;拉取/推送权限、测试/生产部署、流水线、备份及旧源下线仍需负责人确认。
- 本轮未代填飞书表格、未上传文档、未推送分支。团队分享链接需在文档上传或分支推送后补充。
## 认领表“完成说明”可粘贴文本
KIOSK 本轮清理与工程质量优化已完成,待验收。删除 142 个无引用位图文件,移除 Crashlytics buildtools 运行时依赖,修复 Wrapper、Media3 opt-in 和设备测试包名;定向处理不可达 Glide 通知路径的 Lint 告警。Debug APK 158.132 → 150.167 MiB(减少 5.04%);44 项单测通过,Lint 0 错误、257 警告,Debug 与设备测试 APK 构建通过。无连接设备,核心功能及物理打印待实机复核。Git 未回收历史空间;迁移权限和部署链路待负责人确认。分支 codex/kiosk-cleanup,实现提交 e6b671e。完成记录:汉秋_代码优化完成记录_2026-09-20.md(团队可访问链接待补)。