自定义编译器
Jugg 支持通过自定义编译器 SPI 扩展内置增量编译链。自定义编译器可以在 asset、resource、source、minify、dex 等阶段前后插入逻辑,处理项目特有的生成、转换或校验需求。本页说明接入能力和常见插入点,加载与阶段边界见自定义编译器原理。
支持的接入方式
| 场景 | 当前支持情况 | 用户可见结果 |
|---|---|---|
| 本地 jar 自定义编译器 | 支持 | 本地扩展逻辑可进入 Jugg 编译链 |
| 远端 jar 自定义编译器 | 支持 | 远端扩展下载校验后参与编译 |
| 阶段前置处理 | 支持 | 可在内置阶段前消费或改写输入 |
| 阶段后置处理 | 支持 | 可在内置阶段后处理产物 |
| 编译失败收口 | 支持 | 扩展异常会让当前任务失败并给出可见提示 |
NOTE
自定义编译器运行在 Jugg 编译流程内,适合补充增量链路,不适合替代完整 Gradle task graph。
触发与结果
text
自定义编译器配置可用
-> 加载并校验扩展 jar
-> 按配置插入编译阶段
-> 参与本轮增量编译
-> 成功产物继续交给后续阶段选择插入点时,应按用户目标选择阶段,而不是按 jar 加载时机判断。
常见插入点
| 目标 | 推荐区间 |
|---|---|
| 最早处理文件 | atFirst |
| 资源前后处理 | beforeRes / afterRes |
| Java/Kotlin 前后处理 | beforeSource / afterSource |
| 混淆前后处理 | beforeMinify / afterMinify |
| dex 前后处理 | beforeDex / afterDex |