实现原理
这里介绍 Jugg 如何缩短 Android 日常开发中的「修改—运行—验证」循环,以及它如何保证连续多轮增量之后,编译产物、设备状态和源码仍然一致。
如果你正在完成一次具体操作,请从使用指南开始;如果你想确认某项能力支持哪些场景,请查看核心能力;遇到失败时优先进入常见问题。
从一次 Run 建立全局认识
Jugg 将最近一次完整 Gradle 构建作为可信起点。后续点击 Run 时,它先判断当前工程和设备是否还能沿用这份基线,再编译本轮变化及其受影响代码,最后根据产物类型选择部署方式。只有部署成功,本轮结果才会成为下一次增量的起点。
第一次了解 Jugg,可以先阅读《Jugg 工作原理》,再按遇到的问题进入下面的专题。
按问题选择页面
| 你想了解什么 | 建议阅读 |
|---|---|
| 一次 Run 如何完成决策、编译、部署和状态提交 | Jugg 工作原理、编译流水线、增量部署、Gradle 回退与基线重建 |
| 为什么只改一个文件仍可能编译其他文件 | 增量编译、工程模型同步、部署数据与影响分析 |
| class 和资源怎样进入设备,为什么有时重启或更新 APK | 增量部署、Apply Changes 中的 class 与 overlay、APK 更新与安装 |
| 为什么设备未 ready 仍能部署,状态不一致时怎样恢复 | Direct Overlay 部署机制、部署状态与恢复、部署自愈机制、兼容部署 |
| 代码如何在应用进程中被替换并继续运行 | App 进程内 Jugg runtime、Jugg JVMTI Agent |
| 测试、界面取证和版本兼容如何接入主流程 | Android Test 流程、布局导出与界面证据、Android Studio 版本兼容 |
推荐阅读路径
如果你准备系统理解 Jugg,建议依次阅读:
- Jugg 工作原理:先建立一次 Run 的完整模型。
- 增量编译:理解不同输入如何生成局部产物。
- 增量部署:理解产物如何通过 Apply Changes、APK 更新或兼容部署在设备上生效。
- 部署自愈机制:理解已有增量产物怎样通过重试、切换策略和重装继续生效。
- Gradle 回退与基线重建:理解当前构建基线何时必须刷新。
需要查找配置、命令和状态含义时,请使用参考手册。