# Android Skills R8 Analyzer：分析过宽 keep 规则，区分冗余规则与反射必要项

## 执行范围

已只读核对作者keep规则并用javac/java执行真实字符串反射；未运行R8分析任务、APK优化或AI Skill，不捏造体积收益、保活分数或设备验证。

## 输入与目标

含包级keep、库自带consumer rules和反射必要类的练习Android项目

交付：规则来源、影响报告与保留/冗余理由

## 运行

在 reference 目录执行；先按文件 requirements.txt / package.json 或原生工具文档安装依赖。浏览器练习需 `npx playwright install chromium`；也可设置 `PLAYWRIGHT_EXECUTABLE_PATH` 为自己的 Chrome 路径。

```sh
bash check.sh
```

## 目录

- fixtures：作者原创输入，不包含用户真实资料。
- starter：读者待完成任务。
- reference：作者完成参考。
- results：作者实际运行所得或明确标注的待运行输入/预期合同。

## 七步

1. **先确认分析路径**

按官方Skill检查AGP/R8版本与是否可生成定量报告。满足Standalone或Quantitative条件才使用对应路径；无法生成时明确启发式边界。

2. **保存规则原件**

对原创proguard-rules.pro计算前后SHA。只读分析不能直接删除广泛规则，也不能为展示“优化成功”改写输入。

3. **找出包级覆盖**

fixtures.**保活所有成员，把它列为Refine候选。没有真实保活报告时不能声称减少了多少类或APK体积。

4. **追踪反射依据**

Main.java通过Class.forName和getDeclaredMethod访问Payment.total。编译并真实执行返回450，证明字符串合同确实存在。

5. **保留必要成员**

具体Payment.total规则与广泛包规则分开判断。普通直接调用搜索看不到反射关系，不能据此把必要规则删掉。

6. **提出有据建议**

作者参考报告只说明来源、影响候选和未验证项。官方Skill模型未运行，定量score留空，不把作者评估包装成R8报告。

7. **验证只读移交**

再次核对规则SHA不变。正式改规则后还需release构建与设备路径测试；本文Java反射输出不能代替那些检查。

## 来源

- https://raw.githubusercontent.com/android/skills/main/performance/r8-analyzer/SKILL.md


## 原生工具与边界补充

需要JDK17或以上与rg。check.sh只编译作者Java反射并只读查看keep文件，不运行R8/AGP，不能据此推导APK收益。
