AWTK 跨平台嵌入式GUI引擎
awtk
3/5
🧩 软硬件结合
已发布
项目简介
AWTK = Toolkit AnyWhere(a cross-platform embedded GUI)
AWTK(Toolkit AnyWhere)是由ZLG(周立功)团队开发的一款开源跨平台GUI引擎,其核心理念是“一次编写,随处运行”。该项目旨在解决嵌入式系统、桌面应用、移动端乃至Web端在图形用户界面开发中面临的碎片化问题,为开发者提供一套统一、高效且易于使用的UI解决方案。
标签
项目特点
**跨平台**:代码可在ZLG AWorksOS、Windows、Linux、macOS、嵌入式Linux、Android、iOS、HarmonyOS、Web及裸机系统上运行,并易于移植到不同RTOS。
**高效渲染**:采用脏矩形算法仅更新变化区域,支持3个FrameBuffer实现最高帧率,并支持OpenGL、DirectX、Vulkan、Metal等GPU加速接口,以及NXP PXP、STM32 DMA2D等2D加速接口。
**稳定可靠**:通过cppcheck和facebook infer进行静态检查,使用valgrind动态检测内存,拥有约2万行单元测试代码,并在多个实际项目中得到验证。
**功能强大**:提供丰富的控件(持续增加中),支持多种图像格式(png/jpg/gif/svg)和字体格式(位图和矢量字体),支持窗口动画、控件动画、高清屏幕、UI布局描述文件和主题文件,并可在运行时切换主题。
**易于使用**:提供大量演示代码、完整的API文档和用户指南,配有UI设计器(AWTK Designer),支持声明式UI描述语言,一行代码即可启用控件动画、窗口动画和图像显示。
**高度可定制**:支持扩展自定义控件、动画、主循环、软键盘、图像加载器、字体加载器、输入法引擎、控件布局算法、对话框高亮规则、LCD接口和矢量引擎(如Skia/Cairo),所有扩展控件与内置控件同等对待。
**多语言开发**:基于C语言开发,通过IDL生成多种脚本语言的绑定代码,并保持目标语言的原生代码风格。支持C、Go、C++、Lua、Java、Python、JavaScript(JerryScript/Node.js/QuickJS)。
**国际化支持**:支持Unicode、输入法、字符串翻译、图像翻译和文本双向算法。
**MVVM框架**:提供高性能、低内存占用的嵌入式MVVM框架,彻底分离用户界面与业务逻辑,支持C和JS语言,代码量仅约5000行。
**开源免费**:采用LGPL许可证,开源代码可免费用于商业用途。
技术规格
| 开发语言 | C(核心),支持C++/Java/Python/Lua/Go/JavaScript绑定 |
|---|---|
| 支持平台 | ZLG AWorksOS, Windows, Linux, macOS, 嵌入式Linux, Android, iOS, HarmonyOS, Web, 裸机系统, RTOS |
| 最低硬件 | Cortex-M3级别低端MCU |
| 图像格式 | png, jpg, gif, svg |
| 字体格式 | 位图字体, 矢量字体 |
| 渲染技术 | 脏矩形算法, 3 FrameBuffer, GPU加速(OpenGL/DirectX/Vulkan/Metal), 2D加速(PXP/DMA2D) |
| 动画支持 | 窗口动画, 控件动画 |
| 主题支持 | 运行时切换主题 |
| 许可证 | LGPL |
| 代码仓库 | https://github.com/zlgopen/awtk |
| 镜像仓库 | https://gitee.com/zlgopen/awtk |
项目资源
搜索资源
物料清单 (BOM)
| 物料名称 | 数量 | 参考价格 | 备注 |
|---|---|---|---|
| AWTK源码 | 1 | — | 从GitHub或Gitee克隆 |
| AWTK Designer | 1 | — | 可选,UI设计工具,从awtk.zlg.cn下载 |
| SCons构建工具 | 1 | — | 编译必需 |
| Python | 1 | — | 编译必需 |
| Node.js | 1 | — | 编译必需(部分平台) |
| SDL2 | 1 | — | 模拟运行必需(macOS/Linux) |
| Visual Studio C++ | 1 | — | Windows平台编译必需(版本>=2017) |
| Git | 1 | — | 代码管理 |
| Pillow (Python库) | 1 | — | 资源处理 |
| glob (Node.js包) | 1 | — | 资源处理 |
能力画像
⚪ 记忆与知识检索: 2/5
🔵 逻辑推演: 4/5
⚪ 表达与交流: 2/5
⚪ 感知与观察: 1/5
⚪ 数理与计算: 3/5
⚪ 动手与操作: 3/5
⚪ 狂热与坚持: 4/5
⚪ 创造与创新: 4/5
项目图库
所需技能
🔧 **动手能力**:需要具备嵌入式系统开发的基础知识,能够配置开发环境、编译源码、运行模拟器,并能够将AWTK移植到目标硬件平台。
💻 **编程能力**:核心开发语言为C,需要熟练掌握C语言编程。如果使用语言绑定,还需掌握对应语言(如Java、Python、Go等)。需要了解SCons构建系统和Git版本控制。
⚡ **电子电路**:如果涉及硬件平台移植,需要了解目标MCU/SoC的硬件特性、LCD驱动、触摸屏接口等基础知识。
适用场景
**嵌入式设备GUI开发**:为智能家居、工业控制、医疗设备、汽车仪表等嵌入式产品开发图形用户界面。
**跨平台应用开发**:一套代码同时部署到Windows、Linux、macOS、Android、iOS、Web等多个平台。
**物联网终端界面**:为物联网终端设备(如智能手表、智能音箱、数据采集终端)提供轻量级、高效的GUI解决方案。
**原型快速验证**:利用AWTK Designer和丰富的演示代码,快速搭建GUI原型并进行验证。
**教育学习**:学习嵌入式GUI引擎的设计原理、跨平台移植技术、MVVM架构等。