AWTK 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
AWTK 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
AWTK 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
AWTK 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
AWTK 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 LGPL
开发语言 C/C++ 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发GUI开发框架
开源组织
地区 国产
投 递 者 lixianjing
适用人群 未知
收录时间 2019-02-20

软件简介

AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。

欢迎广大开发者一起参与开发:生态共建计划

AWTK 寓意有两个方面:

  • Toolkit AnyWhere。
  • ZLG 物联网操作系统 AWorksOS 内置 GUI。

AWTK 源码仓库:

AWTK Designer 界面设计工具:

  • 不再需要手写 XML
  • 拖拽方式设计界面,所见即所得
  • 快速预览,一键打包资源
  • 注册及下载地址:https://awtk.zlg.cn

AWTK Designer

运行效果截图:

Chart-Demo

MusicPlayer-Demo

Watch

二、最终目标:

  • 支持开发嵌入式应用程序。✔
  • 支持开发 Linux 应用程序。✔
  • 支持开发 MacOS 应用程序。✔
  • 支持开发 Windows 应用程序。✔
  • 支持开发 Web APP。✔
  • 支持开发 Android 应用程序。✔
  • 支持开发 iOS 应用程序。✔
  • 支持开发微信小程序。
  • 支持开发支付宝小程序。
  • 支持开发百度小程序。
  • 支持开发 2D 小游戏。

三、主要特色

1. 跨平台

AWTK 是跨平台的,这有两个方面的意思:

  • AWTK 本身是跨平台的。目前支持的平台有 ZLG AWorksOS、Windows、Linux、MacOS、嵌入式 Linux、Android、iOS、Web 和嵌入式裸系统,可以轻松的移植到各种 RTOS 上。AWTK 以后也可以运行在各种小程序平台上运行。

  • AWTK 同时还提供了一套跨平台的基础工具库。其中包括链表、数组、字符串 (UTF8 和 widechar),事件发射器、值、对象、文件系统、互斥锁和线程、表达式和字符串解析等等,让你用 AWTK 开发的应用程序可以真正跨平台运行。

2. 高效

AWTK 通过一系列的手段保证 AWTK 应用程序高效运行:

  • 通过脏矩算法只更新变化的部分。
  • 支持 3 FrameBuffer 让界面以最高帧率运行 (可选)。
  • UI 描述文件和主题文件使用高效的二进制格式,解析在瞬间完成。
  • 支持各种 GPU 加速接口。如 OpenGL、DirectX、Vulkan 和 Metal 等。
  • 支持嵌入式平台的各种 2D 加速接口。目前 STM32 的 DMA2D 和 NXP 的 PXP 接口,厂家可以轻松扩展自己的加速接口。

3. 稳定

AWTK 通过下列方式极力让代码稳定可靠:

  • 使用 cppcheck 和 facebook infer 进行静态检查。
  • 使用 valgrind 进行动态内存检查。
  • 近两万行的单元测试代码。
  • ZLG 强大 GUI 团队的支持。
  • 经过多个实际项目验证。
  • 多平台 / 多编译器验证。
  • 优秀的架构设计。
  • Code Review。
  • 手工测试。

4. 强大

  • 丰富的控件 (持续增加中)。
  • 支持各种图片格式 (png/jpg/gif/svg)。
  • 支持各种字体格式 (点阵和矢量)。
  • 支持窗口动画。
  • 支持控件动画。
  • 支持高清屏。
  • 支持界面描述文件。
  • 支持主题描述文件。
  • 主题切换实时生效。
  • 支持控件布局策略。
  • 支持对话框高亮策略。
  • 丰富的辅助工具。
  • 支持从低端的 Cortex M3 到各种高端 CPU。
  • 支持无文件系统和自定义的文件系统。
  • 支持裸系统和 RTOS。
  • 支持事件录制与重放进行压力测试。
  • 支持 Appium 进行全自动化 UI 测试。

5. 易用

  • 大量的示例代码。
  • 完善的 API 文档和使用文档。
  • ZLG 强大的技术支持团队。
  • 用 AWTK 本身开发的 界面编辑器
  • 声明式的界面描述语言。一行代码启用控件动画,启用窗口动画,显示图片 (png/jpg/svg/gif)。

6. 高度扩展性

  • 可以扩展自己的控件。
  • 可以扩展自己的动画。
  • 可以实现自己的主循环。
  • 可以扩展自己的软键盘。
  • 可以扩展自己的图片加载器。
  • 可以扩展自己的字体加载器。
  • 可以扩展自己的输入法引擎。
  • 可以扩展自己的控件布局算法。
  • 可以扩展自己的对话框高亮策略。
  • 可以实现自己的 LCD 接口。
  • 可以扩展自己的矢量引擎 (如使用 skia/cairo)。
  • 所有扩展组件和内置组件具有相同的待遇。

7. 多种开发语言

AWTK 本身是用 C 语言开发的,可以通过 IDL 生成各种脚本语言的绑定。生成的绑定代码不是简单的把 C 语言的 API 映射到脚本语言,而是生成脚本语言原生代码风格的 API。目前支持以下语言 (以后根据需要增加):

  • C
  • C++
  • lua
  • java
  • python
  • Javascript on jerryscript
  • Javascript on nodejs
  • Javascript on quickjs

8. 国际化

  • 支持 Unicode。
  • 支持输入法。
  • 支持字符串翻译 (实时生效)。
  • 支持图片翻译 (实时生效)。
  • 文字双向排版。

9. 为嵌入式软件定制的 MVVM 框架,彻底分离用户界面和业务逻辑。

  • 性能高。
  • 内存开销小。
  • 隔离更彻底。
  • 可移植到其它 GUI。
  • 代码小 (~5000 行)。
  • 无需学习 AWTK 控件本身的 API。
  • 支持多种编程语言(目前支持 C/JS)。

详情请参考:https://github.com/zlgopen/awtk-mvvm

10. 开放源码,免费商用 (LGPL)。

四、模拟运行:

下载代码

  • 用 git 下载

Windows 下的 git

下载代码

git clone https://github.com/zlgopen/awtk.git

国内用户推荐使用:https://hub.fastgit.org/zlgopen/awtk.git

Windows 下可以用带 GUI 的 git 下载代码。

更新代码(在 awtk 目录下运行)

git pull

用 git 下载代码的好处是以后更新代码非常快。

  • 直接下载 zip 文件

下载 zip 文件。解压之后需要把文件夹改名为 awtk

Mac

如果没有安装 nodejs, scons 和 sdl2,请在终端运行下面的命令 (假定已安装 brew):

brew install scons sdl2 node

编译运行 (在终端下,进入 awtk 所在的目录,并运行下列命令):

scons
./bin/demoui

Ubuntu (版本 >=16)

如果没有安装 scons 和依赖的软件包,请在终端运行下面的命令:

sudo apt-get install gcc g++ scons libsndio-dev libgtk-3-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev libasound2-dev git vim clang-format libharfbuzz-dev nodejs

编译运行 (在终端下,进入 awtk 所在的目录,并运行下列命令):

scons
./bin/demoui

在 Ubuntu 14 上无法启动,请参考 FAQ 修改。

Windows

请先安装 python(64 位系统要安装 64 位版本的 python),scons 和 Visual Studio C++(版本 >=2017)

如果没有安装 pywin32,请 pip 安装:

pip install pywin32

如果没有安装nodejs,请到 nodejs下载并安装。

编译运行 (在命令行模式下,进入 awtk 所在的目录,并运行下列命令):

scons
bin\demoui

所有平台

  • 如果 PIL 没有安装,请用 pip 安装:
pip install Pillow
  • 如果 glob 没有安装,请用 npm 安装:
npm install -g glob

五、在线演示

六、各个平台的移植

七、各语言的绑定

八、相关工程

第三方提供:

九、文档

十、生态共建计划

   

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (26)

加载中
_en
6啊
2020/12/18 19:46
回复
举报
IDE后续支持怎么收费的啊?
2020/12/18 19:33
回复
举报
很好,学习
2020/07/14 09:29
回复
举报
非常不错,支持
2020/06/29 23:05
回复
举报
MinGW下能编译吗?
2019/12/10 18:14
回复
举报
支持一下
2019/12/10 09:01
回复
举报
不错,支持
2019/12/03 06:47
回复
举报
另外请问有AWTK架构方面的资料吗,这样我们理解,修改,以及扩展会方便些,谢谢
2019/11/06 09:13
回复
举报
git hub下载文档我这里总是下载不下来
2019/11/06 09:12
回复
举报
看了视频演示 没看到密码框 能实现密码输入弹出框吗
2019/08/17 16:40
回复
举报
更多评论
发表于大前端专区
03/08 09:20

跨平台 GUI 引擎 AWTK 1.6 发布

一、介绍 AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。 欢迎广大开发者一起参与开发:生态共建计划。 AWTK 寓意有两个方面: Toolkit AnyWhere。 ZLG 物联网操作系统 AWorksOS 内置 GUI。 AWTK 源码仓库: 主源码仓库:https://github.com/zlgopen/awtk 镜像源码...

13
38
发表于大前端专区
2020/09/03 22:50

AWTK Designer 0.1.7 暨 AWTK v1.5 正式发布

今天,我们迎来了Designer 0.1.7的发布,增加了创建和导入自定义控件、语言文件编辑器支持特定字体显示翻译文本等功能。同时,AWTK也升级到了1.5版本,增加了字符编码转换、双向排版等功能。 AWTK Designer是专门用来制作AWTK应用程序的UI界面的实用工具,只要通过拖曳和点击就可以完成复杂的界面设计,而且可以随时预览效果图。通过AWTK Designer即可完成UI界面元素的布局、设置控件属性、给控件添加动画效果和设置样式等。 得...

1
5
发表于大前端专区
2020/08/27 10:34

AWTK 1.5 发布,国产开源 GUI 引擎

ZLG AWTK 1.5 Release Notes 一、介绍 AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。 欢迎广大开发者一起参与开发:生态共建计划。 AWTK 寓意有两个方面: Toolkit AnyWhere。 ZLG 物联网操作系统 AWorksOS 内置 GUI。 AWTK 源码仓库: 主源码仓库:https://git...

7
23
发表于大前端专区
2020/04/13 07:37

跨平台 GUI 引擎 AWTK 1.4 发布

一、介绍 AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。 欢迎广大开发者一起参与开发:生态共建计划。 AWTK 寓意有两个方面: Toolkit AnyWhere。 ZLG 物联网操作系统 AWorksOS 内置 GUI。 AWTK 源码仓库: 主源码仓库:https://github.com/zlgopen/awtk 镜像源码...

8
32
发表于大前端专区
2019/11/22 13:04

GUI 引擎 AWTK v1.3 发布

今天,AWTK v1.3正式发布。新版AWTK完善了许多细节,增加了部分特性、控件和API等,支持更多功能和更炫酷的效果。我们推出AWTK生态共建计划,诚邀您共同参与嵌入式开发生态建设,实现共赢! “2019年最受欢迎中国开源软件评选” ZLG邀您为 AWTK 投出宝贵的一票: https://www.oschina.net/p/awtk AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为...

2
15
发表于大前端专区
2019/07/30 09:12

AWTK 1.2 发布,国产开源 GUI 引擎

AWTK全称为Toolkit AnyWhere,是ZLG倾心打造的一套基于C语言开发的GUI框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的GUI引擎,并支持跨平台同步开发,一次编程,终生使用。 AWTK当前升级到了v1.2版本,相对于v1.1,我们完善了许多细节,增加了部分特性、控件以及API等,让AWTK支持更多的功能和更炫酷的效果。 1.2版本更新的内容 细节完善 输入法候选字支持滚动; slider支持上下左右键; guage ...

24
61
发表于大前端专区
2019/04/25 09:07

国产开源 GUI 引擎 AWTK 1.1 发布

一、介绍 AWTK全称Toolkit AnyWhere,是ZLG开发的开源GUI引擎,旨在为嵌入式系统、WEB、各种小程序、手机和PC打造的通用GUI引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的GUI引擎。 AWTK寓意有两个方面: Toolkit AnyWhere。 ZLG物联网操作系统AWorks内置GUI。 AWTK源码仓库: 主源码仓库:https://github.com/zlgopen/awtk 镜像源码仓库:https://gitee.com/zlgopen/awtk 运行效果截图: 二、最终目...

16
87
发表于大前端专区
2019/02/20 08:58

ZLG 发布开源 GUI 引擎 AWTK

随着手机、智能手表等便携式设备的普及,用户对 GUI 的要求越来越高,嵌入式系统对高性能、高可靠性、低功耗、美观炫酷的 GUI 的需求也越来越迫切,ZLG开源 GUI 引擎 AWTK 应运而生。 AWTK 全称为 Toolkit AnyWhere,是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎,并支持跨平台同步开发,一次编程,终生使用。 主要特色: 开源免费,使用...

7
53
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于硬件 & IoT专区
2019/06/10 17:15

集成 AWTK 到 iotjs

# 集成 AWTK 到 iotjs > [iotjs](https://github.com/pando-project/iotjs) 是三星开源的 javascript 物联网开发平台。它为 javascript 应用程序提供了访问硬件、网络、文件系统和异步化的能力,功能类似于 nodejs,但无论是代码体积还是内存需求,iotjs 都要小很多,是用 javascript 开发 iot 设备应用程序的首选。 >AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打...

0
0
发表于硬件 & IoT专区
2019/11/09 08:52

AWTK 在腾讯 TOS 上的移植笔记

# AWTK 在腾讯 TOS 上的移植笔记 本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。因为 RTOS 通常没有提供标准的 LCD 驱动接口,显示部分并不需要特别的改动。所做的事情不过是把 AWTK 放到 RTOS 的一个线程中执行而已。 ## 1. 加入 TOS 相关文件。 AWTK 已经移植到 STM32f103ze 裸系统上,为了简单起见,直接在 [awtk-stm32f103ze-raw](https://github.com/zlgopen/awtk-stm32f103ze...

0
1
2020/01/19 23:05

AWTK Designer快速安装指南

AWTK Designer的安装和注册过程非常简单,本文将为大家介绍完整的安装与注册步骤。 按照下面的步骤即可完成AWTK Designer的安装与注册。 1.1 下载地址 打开网址:https://awtk.zlg.cn,然后点击图1.1中的“客户端下载”,下载AWTK Designer。 图1.1 客户端下载 1.2 安装 下载好AWTK Designer后,双击AWTK-Designer-x64-xxx-Setup.exe,按照下面步骤完成安装。需要安装在Win7以上的64位系统,否则会导致安装失败。 1.2.1 点击“下...

0
0
发表了博客
01/24 19:04

AWTK-MVVM:数据与命令的绑定

MVVM MVVMModel-View-ViewModel,它是MVC的改进版。 MVVM优点: 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel)。 可测试。界面素来是比较难于测试的,测试可以...

0
0
发表于硬件 & IoT专区
2019/11/20 15:53

AWTK 控件焦点相关问题

# 控件焦点相关问题 ## 一、启用焦点停留 (tab stop) 除了 edit 控件外,其它控件如果需要焦点停留功能,可以指定控件的 focusable 属性为 true 来实现。 在 XML 中,可以这样指定: ``` ``` 在 C 代码中,可以这样指定: ``` widget_set_prop_bool(widget, WIDGET_PROP_FOCUSABLE, TRUE); ``` > 如果指定了 fucusable 属性为 true,请确保控件的 style 中定义了 focused 状态的数据,否则会因为 focused 状态没有 style 数据而...

0
0
发表于硬件 & IoT专区
2019/01/18 16:57

AWTK是如何保证代码质量的

[AWTK](https://github.com/zlgopen/awtk)是ZLG开源的GUI引擎,不少朋友关心[AWTK](https://github.com/zlgopen/awtk)是如何保证代码质量的,这里统一回复一下。我们在保证[AWTK](https://github.com/zlgopen/awtk)的代码质量方面,主要采用了下列措施: * **架构设计。** 软件架构对代码的质量有决定性的影响,但好的架构不是预先设计出来的,而是在应对各种需求和变化时,不断完善和优化出来的。常常见到,有人花十年时间打造...

0
0
发表于硬件 & IoT专区
2019/11/09 08:35

AWTK 在 RT-Thread 上的移植笔记

# AWTK 在 RT-Thread 上的移植笔记 本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。所做的事情不过是把 AWTK 放到 RTOS 的一个线程中执行而已。 ## 1. 加入 RT-Thread 相关文件。 AWTK 已经移植到 STM32f103ze 裸系统上,为了简单起见,直接在 [awtk-stm32f103ze-raw](https://github.com/zlgopen/awtk-stm32f103ze-raw/) 基础上加入 RT-Thread 支持。 * 在 Keil 中增加下列文件: ...

0
0
2020/01/19 23:05

AWTK Designer快速使用指南

本文主要讲述使用AWTK Designer设计UI界面的一些基础功能,让你快速的学会AWTK Designer编程。 AWTK Designer(下面简称Designer)是专门用来制作AWTK 应用程序UI 界面的实用工具。只要通过拖拽和点击就可以完成复杂的界面设计,操作简单,下面以HelloDesigner-Demo为例,介绍如何使用Designer。 1.1 新建项目 首先启动Designer,会弹出“新建项目”对话框,如图 1.1所示。 图1.1 新建项目 为确保后续能够正确编译AWTK工程,建议...

1
1
发表于硬件 & IoT专区
2020/01/09 15:39

AWTK 编译与调试 环境搭建指南

[AWTK 编译与调试 环境搭建指南.md](https://github.com/hk-mars/Blog-Article/blob/master/IoT/AWTK%20编译与调试%20环境搭建指南.pdf "AWTK 编译与调试 环境搭建指南.md") [AWTK 编译与调试 环境搭建指南.pdf](https://github.com/hk-mars/Blog-Article/blob/master/IoT/AWTK%20编译与调试%20环境搭建指南.pdf "AWTK 编译与调试 环境搭建指南.pdf")...

0
0
发表于硬件 & IoT专区
2019/03/14 11:37

AWTK实现自定义软键盘的方法

有时需要把软键盘嵌入到窗口内部(比如计算器和密码输入等),这时可以使用自定义软键盘。 ### 一、编辑器设置input_type为"custom"(它会禁止内置的软键盘)。 ``` ``` > 如果希望初始化时编辑器自动获的焦点,可以设置focus为true。 ### 二、软键盘的按钮放入一个view(任何容器控件均可)中,并将view的is\_keyboard设置为true。 ``` ``` ### 三、处理按钮事件 #### 1.处理正常按键 ``` static ret_t on_send_key(void* ctx, even...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
26 评论
446 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部