87 lines
7.5 KiB
Markdown
87 lines
7.5 KiB
Markdown
# 代码优化完成记录
|
||
|
||
- 姓名 / 角色 / 项目:汉秋 / 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(团队可访问链接待补)。
|