Skip to content

Releases: donglua/LayoutX2C

LayoutX2C 0.4.1

02 Jun 12:08

Choose a tag to compare

更新内容

  • 修复 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

02 Jun 10:01

Choose a tag to compare

主要更新

  • 为支持的 DataBinding 布局生成继承 ViewDataBinding{Name}X2CBinding facade。
  • 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.0 tag 上成功完成。

说明

  • 复杂 DataBinding 表达式、BindingAdapter、Observable / LiveData 订阅和 lifecycle observer 语义仍交给原生 DataBinding runtime。
  • 不支持或无法安全等价生成的布局语义仍会 fallback 到平台 LayoutInflater

0.3.5

02 Jun 07:39

Choose a tag to compare

修复

  • 裸 KSP 接入时,优先从配置类中的 R import / 全限定 R.layout.* 推导生成代码使用的 R 包,避免源码 package 与 Android namespace 不一致时生成错误 R 引用。
  • 找不到源码 R 引用时,兜底从 Android Gradle namespace 推导 R 包。

0.3.4

02 Jun 06:55

Choose a tag to compare

修复

  • 修复 fallback 子节点的 dp LayoutParams 生成代码漏声明 density,避免 KSP 生成 Kotlin 编译时报 Unresolved reference 'density'。

发布

  • 版本号更新到 0.3.4。
  • 发布流水线在未配置 Gradle Plugin Portal 密钥时跳过 plugin portal 发布,避免影响 Maven artifacts 发布。

0.3.3

02 Jun 05:55

Choose a tag to compare

修复

  • 修复 LayoutX2C 在 nonTransitiveRClass 下把依赖模块资源硬生成当前模块 R 引用的问题。
  • 对无法确认 owner 的资源引用走 fallback,避免生成不可编译的 R.color/R.drawable/R.string/R.dimen 静态引用。
  • 支持已知 owner 时生成全限定 owner R 引用。
  • Release workflow 改为数字版本 tag 触发,版本号不再带 v 前缀。

验证

  • ./gradlew test

0.3.0

02 Jun 01:53

Choose a tag to compare

主要变化

  • 增加项目级 layoutX2CReport 汇总任务,输出稳定 JSON 和可读 HTML 报告。
  • 支持通过 maxFallbackLayoutsfailOnFallbackReasons 配置 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

28 May 08:27

Choose a tag to compare

主要变化

  • 建立 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 发布自动化尚未在本版本配置。