百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
X

X2C

> 编程语言
开源

将布局加载速度提升200%

2.6K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

将布局加载速度提升200%

背景

通常,在编写页面时,大家都是通过 XML 来编写布局,并通过 setContentView 或 LayoutInflater.from(context).inflate 方法将 XML 布局加载到内存中。

优点

  • 可维护性好
  • 支持即时预览
  • 代码结构清晰

缺点

  • 读取 XML 耗时
  • 递归解析 XML 耗时
  • 生成对象所需的时间是 new 的三倍以上

我们的团队在这个问题上也探索了很多解决方案。曾经一度走到了另一个极端,完全放弃xml,所有控件都通过java新建,甚至直接在canvas上绘制,这样虽然性能确实提升了,但代码却失去了可读性和可维护性。 后来我们反思,代码到底是给机器看的,还是给人看的??也许X2C已经给了我们一个答案。

X2C

为了保留xml的优势并解决其带来的性能问题,我们开发了X2C解决方案。即在编译生成APK的过程中,将需要翻译的布局翻译生成对应的java文件,这样开发者编写布局时仍编写原始的xml,但对于程序而言,运行时加载的是对应的java文件。 我们使用APT(注解处理器工具)+ JavaPoet技术,在编译期间完成整个流程的操作:[注解] -> [解析] -> [翻译xml] -> [生成java]。

性能对比

在开发集成之后,我们做了一个简单的测试,性能对比如下

加载方式 频率 平均加载时间
XML 100 30
X2C 100 11

集成使用

1. 添加依赖

在模块的 build.gradle 文件中添加依赖

java
annotationProcessor 'com.zhangyue.we:x2c-apt:1.1.2'
implementation 'com.zhangyue.we:x2c-lib:1.0.6'

2. 添加注解

为任何使用该布局的 java 类或方法添加注解。

java
@Xml(layouts = "activity_main")

3. 配置自定义属性(可无)

在模块下创建 X2C_CONFIG.xml 文件,其中定义了

中文

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Java

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言