Releases: donglua/LayoutX2C
Releases · donglua/LayoutX2C
LayoutX2C 0.4.1
更新内容
- 修复 Binding facade 字段类型收集逻辑,保留 XML 中具体 View 类型,避免生成 binding 字段退化成过宽类型。
- 修复 LayoutX2C 升级后仍可能复用旧 KSP digest cache 的问题。
- digest 兼容键现在包含处理器 Implementation-Version,XML 未变但处理器版本变化时会自动重新生成产物,避免旧 fallback 输出被恢复。
- Gradle 插件内置 runtime / ksp-processor 依赖版本同步升级到 0.4.1。
Commits
- 8f7971c fix(binding): preserve concrete view field types
- e68ca5c fix(ksp): invalidate stale generated cache on upgrades
验证
- ./gradlew test :demo:assembleDebug :runtime:assembleRelease :demo:assembleRelease :demo:assembleDebugAndroidTest
- GitHub Release workflow 通过,Maven artifacts 已发布。
LayoutX2C 0.4.0
主要更新
- 为支持的 DataBinding 布局生成继承
ViewDataBinding的{Name}X2CBindingfacade。 - fallback 子节点 inflate 改为走平台 XML parser 路径,提升 fallback 语义一致性。
- DataBinding + ConstraintLayout root 在符合安全子集时保持生成路径。
- 版本命名统一使用裸版本 tag:
0.4.0。
验证
./gradlew test :demo:assembleDebug :runtime:assembleRelease :demo:assembleRelease :demo:assembleDebugAndroidTest --no-daemon --console=plain./gradlew :demo:kspDebugKotlin :demo:compileDebugKotlin --rerun-tasks --no-daemon --console=plain./gradlew :compiler-core:publishToMavenLocal :ksp-processor:publishToMavenLocal :gradle-plugin:publishToMavenLocal :runtime:publishReleasePublicationToMavenLocal --no-daemon --console=plain- GitHub Actions Release workflow 已在
0.4.0tag 上成功完成。
说明
- 复杂 DataBinding 表达式、BindingAdapter、Observable / LiveData 订阅和 lifecycle observer 语义仍交给原生 DataBinding runtime。
- 不支持或无法安全等价生成的布局语义仍会 fallback 到平台
LayoutInflater。
0.3.5
0.3.4
0.3.3
0.3.0
主要变化
- 增加项目级
layoutX2CReport汇总任务,输出稳定 JSON 和可读 HTML 报告。 - 支持通过
maxFallbackLayouts和failOnFallbackReasons配置 CI fallback policy。 LayoutDigest纳入 include / ViewStub layout 引用图,被引用 layout 变更会触发引用方重新生成。- 保持保守 cache 语义:digest 未变时可恢复 per-layout factory、facade 和 report,避免无意义重生成。
- 更新 Roadmap,把已完成的报告产品化和 include digest 从 Next 收敛到 Current,并明确下一步为 Android 等价性测试、README/Demo 同步和精确资源引用图。
验证
已执行:
./gradlew test :demo:assembleDebug :runtime:assembleRelease :demo:assembleRelease :demo:assembleDebugAndroidTest结果:BUILD SUCCESSFUL。
已知后续
- values XML 仍作为 coarse input,style / dimen / color / string / drawable 精确引用图留到后续版本。
- Android generated vs inflated 等价性测试还需要继续系统补齐。
LayoutX2C 0.2.0
主要变化
- 建立 v0.2 的正确性基线:XML layout 编译为 Kotlin 代码时,优先保证生成结果与原始 inflate 语义等价。
- 对暂不支持或无法安全生成的 XML 语义继续走 fallback 路径,避免生成错误 UI。
- 引入保守的 KSP digest cache:layout digest 未变化时可恢复 per-layout factory、facade 和 report;变化时只重新处理对应 layout。
- Gradle 插件已把 layout XML 和 values XML 声明为 KSP task 输入,避免 processor 直接读取资源但 Gradle/KSP 不感知变更。
- demo 的生成 inflate 等价性检查改为标准 AndroidX instrumentation test,Gradle 可发现、编译并打包测试。
验证
已执行:
./gradlew test :demo:assembleDebug :runtime:assembleRelease :demo:assembleRelease :demo:assembleDebugAndroidTest结果:BUILD SUCCESSFUL。
已知后续
- Registry 仍是 aggregating 输出;内容 hash / 跳过无意义重写仍计划在后续版本处理。
- Maven Central / Gradle Plugin Portal 发布自动化尚未在本版本配置。