AWTK 跨平台嵌入式GUI引擎 awtk

⭐⭐⭐☆☆ (3/5) 🧩 软硬件结合 已发布
zlgopen 3156 Stars 未知 BOM 完整度: /5 教程完整度: /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许可证,开源代码可免费用于商业用途。

技术规格

开发语言
支持平台
最低硬件
图像格式
字体格式
渲染技术
动画支持
主题支持
许可证
代码仓库
镜像仓库

项目资源

物料清单 (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 资源处理

所需工具

工具用途是否必需
SCons 构建和编译项目 ✅ 是
Python 运行编译脚本和资源处理 ✅ 是
Node.js 资源处理和部分平台依赖 ✅ 是
Git 代码版本管理 ▢ 推荐
Visual Studio C++ Windows平台编译 ▢ 推荐
SDL2 模拟运行(macOS/Linux) ▢ 推荐
AWTK Designer 可视化UI设计 ▢ 推荐
cppcheck 静态代码检查 ▢ 推荐
valgrind 动态内存检测 ▢ 推荐
clang-format 代码格式化 ▢ 推荐

能力画像

记忆与知识检索
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架构等。