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许可证,开源代码可免费用于商业用途。
技术规格
| 开发语言 | |
|---|---|
| 支持平台 | |
| 最低硬件 | |
| 图像格式 | |
| 字体格式 | |
| 渲染技术 | |
| 动画支持 | |
| 主题支持 | |
| 许可证 | |
| 代码仓库 | |
| 镜像仓库 |
项目资源
zlgopen/awtk
zlgopen/awtk
/awtk.zlg.cn
demoui/index.html
Chart.v2-Demo/index.html
MusicPlayer.v2-Demo/index.html
SmartWatch.v2-Demo/index.html
zlgopen/awtk-mvvm
zlgopen/awtk-binding
zlgopen/awtk-lua
zlgopen/awtk-go
zlgopen/awtk-cpp
zlgopen/awtk-java
zlgopen/awtk-python
zlgopen/awtk-quickjs
zlgopen/awtk-nodejs
zlgopen/awtk-jerryscript
zlgopen/awtk-hello
zlgopen/awtk-mvvm-c-hello
zlgopen/awtk-c-demos
zlgopen/awtk-examples
docs/faq.md
物料清单 (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架构等。