一款开源的跨平台 GUI 引擎,支持嵌入式 RTOS,桌面系统,移动平台,网络端

 

许多小伙伴是不是都被各种平台折腾得头大?嵌入式系统、Web、手机、桌面……同一个页面要写 N 套代码?还有性能掉帧、功能拓展难、资源吃紧的苦恼?别急,让我给你安利一个“黑科技”——AWTK,Toolkit AnyWhere,让你一次上手,多端通吃。


AWTK是什么,让人立刻爱上的秘密
AWTK,全称 Toolkit AnyWhere,是一款开源的跨平台 GUI 引擎。

  • • 支持:嵌入式 RTOS、Linux、Windows、macOS、Android、iOS、HarmonyOS、Web、小游戏……

  • • 核心:高效、稳定、易用、可定制。

  • • 特色:自带可视化 Designer(拖拽生成 UI,所见即所得),零门槛上手。

这款神器解决了哪些痛点?
很多项目里,UI 一出问题就要打退堂鼓,下面痛点表,你肯定有同感:

痛点

传统方案

AWTK 的解决思路

平台分散,重复造轮子

针对每个平台写不同 UI 框架

一套代码,多平台编译运行

性能瓶颈,掉帧卡顿

CPU 或 GPU 加速支持有限

3 帧缓存、OpenGL/DirectX/Vulkan/Metal 接口

UI 迭代慢,维护成本高

资源文件嵌套 XML/JSON,解析慢

二进制格式描述,解析更快

功能拓展难,定制化成本大

难以定制控件、换主题

全面可扩展:自定义控件、布局、动画、资源加载

多语言支持不足

UTF-8、双向排版、复杂脚本支持弱

内置 Unicode、输入法、图片/字符串翻译

快速上手,仅需三步

  1. 1. Git 克隆仓库

    git clone https://github.com/zlgopen/awtk.git
    cd awtk
  • 2. 安装依赖(以 macOS 为例)

    brew install scons sdl2 node
  • 3. 编译运行 Demo

    scons
    ./bin/demoui
  • 不到一分钟,你就会看到 AWTK 的欢迎界面在你屏幕上灵动跳跃。

    实战例程:30行代码造个播放器界面
    下面示例,用 AWTK 的声明式语言,快速生成一个音乐播放器的主界面。

    // main.c
    #include "awtk.h"

    ret_tapp_init(void) {
    widget_t* win = window_open("player", NULL);
    widget_t* btn = button_create(win, "btn_play");
      widget_set_prop_str(btn, "text", "Play");
      widget_layout_linear_ex(win, WIDGET_TYPE_BUTTON, 0, 0);
      widget_on(btn, EVT_CLICK, [](event_t* e){
        log_debug("点击播放啦~");
        return RET_OK;
      }, NULL);
    return RET_OK;
    }

    intmain(int argc, char* argv[]) {
      application_init(argc, argv);
      application_set_init(app_init);
    return application_run();
    }

    放到 ui/player.ui 里,配个简单主题文件,调调样式,就能跑在 ARM 板、PC 桌面甚至网页上。同一套代码,一键打包多端,无压力。

    优缺点一览表

    优点

    缺点

    跨平台支持

    RTOS、桌面、移动、Web 全家桶

    某些特性(如高级 GPU 加速)需自行适配

    性能与资源占用

    脏矩形刷新、3 帧缓冲、二进制 UI、可选硬件加速

    极低端 MCU(32K+RAM)需精细裁剪

    易用性

    拖拽可视化 Designer、声明式 UI、完备 API 文档

    Designer 功能持续完善中,多人协作需规范流程

    可扩展性

    自定义控件、动画、布局、输入法、文件系统、主循环等

    扩展接口多,初学者需要时间消化

    社区与支持

    ZLG 官方团队维护、活跃交流群、LGPL 商用免费

    中文文档还有待补齐,部分高级主题需社区贡献补充

    一言不合就总结
    AWTK 就像一把“瑞士军刀”,帮你切掉各平台碎片化开发的烦恼,轻松搞定高性能、跨平台、高定制化需求。适合团队项目,也能满足个人兴趣者玩转各种终端设备。它不完美,但正因为它开放、可扩展,才给你无限可能。

    准备好了吗?从今天起,把那些重复造轮子的日子抛在脑后,让 AWTK 伴你遨游多端 GUI 的星辰大海!

    项目地址:https/github.com/zlgopen/awtk

     

    发表评论