快照功能的设计灵感
VCS 的启发
快照功能是 LibChecker 的招牌特性,灵感来自版本控制系统(VCS)——就像 Git commit 记录代码仓库在某个时间点的状态快照,LibChecker 的快照记录设备上所有应用在某个时间点的组件和元数据。
作者 Absinthe 在官方文档中提到,快照的起源是一个动画里"暂停时间"的能力——把当前状态冻结下来,与未来某一时刻对比。
快照能记录什么
每次快照保存以下信息:
- 所有应用的原生库清单
- 四大组件清单(服务/活动/广播/Provider)
- 权限声明
- 元数据条目
- 包名、版本号、签名
- 安装时间、更新时间
- ABI 架构
- 其他包特性标记
快照对比能发现什么
保存快照后,当某个 App 更新到新版本时,LibChecker 可以告诉你:
- 新增了哪些组件
- 删除了哪些组件
- 修改了哪些组件属性
- 新增了哪些原生库
- 删除了哪些权限声明
为什么普通用户也需要
很多人抱怨"App 每次更新都像刷版本号"——版本号从 2.0 跳到 2.1,功能似乎没变。但快照对比会让你看到:底层可能新增了 10 个广播接收器、引入了 2 个新的三方 SDK、删除了一个过时的服务。这些变化普通用户感知不到,快照能让它们显性化。
保存快照的时机
建议定期保存:
- App 更新后:立即保存更新后的快照,留作下次对比基线
- 系统更新前:保存当前状态,方便排查更新后的异常
- 批量安装/卸载 App 前后:量化 App 生态变化