# 片袋 0.2.0 验证记录

验证日期：2026-09-28。**本地功能验收通过；用户提供的真实播放线路目前受上游限制，真实整文件缓存及内置播放验收未完成。** 不能将本地通过等同于该线路当前可用。

## 已通过的本地检查

| 检查 | 结果 | 范围 |
|---|---:|---|
| HTTP / TLS / 分段缓存 | 64 项 | 23 项 HTTP、9 项 TLS、32 项共享缓存及代理检查 |
| Android 功能回归 | 36 项 | 登录、选集、选片源、TS/MKV 容器别名、大小限制、暂停续传、完整 SHA-256、字幕、权限拒绝、空间预留、任务恢复 |
| 内置 LibVLC 播放 | 13 项 | 实际视频帧显示、未下载完开播、暂停后台缓存、跳到 45 秒、音轨、外挂字幕加载与选中、倍速、续看、完整 SHA-256、媒体服务器离线时本地播放、复用媒体跳转 |
| 横竖屏 | 3 项 | 两次切换保持同一解码器，旋转后继续播放 |

总计 116 项。日志在 `test-results/v0.2.0/`。最后的 TS/MKV 容器别名调整通过 Android 回归；播放器及横竖屏代码在此调整中未改动。

缓存专项覆盖首段播放、跳读末尾、稀疏文件真实进度、索引恢复、缓存命中离线读取、缺失区间断网失败、版本变化拒绝混拼、并发同段去重、后台暂停、HTTP HEAD/Range/416、错误地址、错误区间、断流、缺少 Range/validator 的退化路径、空间上限、旧版 partial 迁移及完整字节一致性。

限速播放样本为自行生成的 60 秒 H.264/AAC MP4，含有效媒体及 free box，总长 32 MiB。测试确认播放发生在完整缓存之前，跳播并补齐后全文件 SHA-256 与原始样本一致。字幕为自行生成的中英文 SRT。无真实影片、字幕或账号数据被打包。

## 真实线路：部分通过，后续受阻

通过生产 Android 客户端成功登录并选择一个 29,872,538 字节（28.49 MiB）的真实 MKV；成功读取第一个分段、从文件尾部读取并与独立 CDN Range 的最后 64 KiB 比对（206），自动保存对应的外部 ASS 字幕。

进一步缓存时，上游签名服务通过错误重定向返回：

> sign123_api, code: 500, msg: 您的账号已被限制访问,如需解封请联系管理员

独立电脑端请求也收到同样拒绝。登录和片库仍可访问，不能据此判断是 Emby 用户还是上游存储账号被限制，也不能确认限制的具体原因。发现明确拒绝后，已停止真实媒体请求，没有改线路绕过。所有临时验收登录会话已注销，返回 HTTP 204；临时账号、目录信息及媒体片段已清理。

本版会复用成功取得的媒体地址，避免每个分段重新经过签名跳转；在受控 Android 测试中，整个播放/缓存过程只触发了一次媒体跳转。已过期地址遇到 401/403 会重新获取。上游 `error500:` 等错误会显示为可读原因，并保留已缓存内容。**这项修复不能解除服务方的账号限制，真实受限线路也未能补测通过。**

本次不算通过的项目：真实整文件下载完成、真实全文件字节校验、真实 MKV 在新内置播放器中的完整播放。旧版验收记录不能替代本版结果。服务方恢复后，需要重新运行真实验收。

## 构建与升级

JDK 17 / SDK 35 编译，APK v2/v3 签名校验通过，签名证书与 0.1.2 相同，可覆盖安装保留数据。通用包包含 arm64-v8a、armeabi-v7a、x86、x86_64；64 位 native ELF 的 16 KiB 对齐及 APK zipalign 检查通过。最低 Android 8.0。

依赖固定为 LibVLC Android 3.6.5，下载 SHA-256 写入 `dependencies.json`。3.7.5 在本软件模拟器中反复停在首次字幕字体库初始化，未采用该版本。编译产物和源码已检查不含真实账号、密码、令牌、服务器地址或私钥。首次安装不预置媒体证书忽略选项。

## 验证边界

设备为 Android 10 / API 29 x86_64 软件模拟器，无 KVM，**没有手机真机结果**。软件解码和限速过程中出现迟到帧、丢帧及部分画面异常；完整本地播放的画面和字幕截图已检查。这里确认功能、文件完整性和播放流程，不宣称流畅度、所有机型或所有蓝光编码都已通过。

没有验证数 GiB 长时下载、厂商后台省电、Android 15 实际 dataSync 时限、4K/HDR/Dolby Vision、全部音频透传、所有内封图片字幕、完整蓝光菜单或 DRM。本工具不自动压缩原盘，不转码，不同步服务器观看记录。暂停后台缓存时，继续观看仍会读取所需的缺失分段；卸载会删除 App 专属缓存。
