您尚未登录。

楼主 #1 2020-04-21 11:21:56

lixianjing
会员
注册时间: 2019-04-25
已发帖子: 105
积分: 101.5

AWTK 1.4 发布

ZLG AWTK 1.4 Release Notes

一、介绍

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

欢迎广大开发者一起参与开发:[生态共建计划](docs/awtk_ecology.md)。

AWTK 寓意有两个方面:

  • Toolkit AnyWhere。

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

AWTK 源码仓库:

AWTK Designer 界面设计工具:

  • 不再需要手写 XML

  • 拖拽方式设计界面,所见即所得

  • 快速预览,一键打包资源

  • 注册及下载地址:https://awtk.zlg.cn


二、最终目标:

  • 支持开发嵌入式应用程序。✔

  • 支持开发 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。

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)。

四、1.4 版本更新

1. 细节完善

  • 完善 fs 接口。

  • 完善工具支持多主题。

  • list view 支持上下键滚动。

  • 完善窗口切换时焦点恢复的问题。

  • 完善 combobox,选择之后重新打开输入法。

  • progress circle 支持 line cap 属性。

  • 增加 vgcanvas_line_join_t 定义。

  • 增加 vgcanvas_line_cap_t 定义。

  • 修改 android resume 后界面黑屏的问题。

  • slide view/pages 每个页面支持独立的初始焦点。

  • 增加函数 widget_set_child_text_utf8。

  • 增加函数 widget_set_child_text_with_double。

  • keyboard 在 grab_keys 时,keyboard 处理 key 事件后,应用窗口不再处理。

  • 完善 image value,支持点击时加上一个增量,增加到最大值后回到最小值。

3. 新增特性

  • 无文件系统是支持多主题。

  • opengles 支持 snapshot。

  • dit/mledit 支持自己指定软键盘名称。

  • 点击鼠标右键触发 context menu 事件。

  • 使用 event_source_manager 实现主循环。

  • 增加 awtk_main.inc,用于标准程序的主函数。

  • 用 SDL 重新实现 PC 版本的线程和同步相关函数 。

  • edit 增加 input type "custom_password"类型。

4. 新增控件

5. 新增重要 API

  • 增加 action thread。

  • 增加 action thread pool。

  • 增加动态链接库的接口 dl.h。

  • 增加 waitable ring buffer。

  • 增加 widget_close_window。

  • 增加 waitable_action_queue。

  • 增加 path_replace_extname 函数。

  • 增加 async.c/.h 用于实现函数异步调用。

  • 增加 path_replace_extname 函数。

  • 增加 async.c/.h 用于实现函数异步调用。

  • 增加 data reader 接口和 data writer,用于抽象外部 flash 等设备。

  • 增加函数 fs_get_user_storage_path 用于统一 PC 和 android 平台保存数据的目录。

6. 新增平台

7. 新增语言绑定

8. 新增相关项目

欢迎广大开发者一起参与开发:[生态共建计划](../awtk_ecology.md)。

离线

#2 2020-04-21 15:20:57

tianjjff
会员
注册时间: 2018-12-24
已发帖子: 129
积分: 22

Re: AWTK 1.4 发布

顶顶顶!!!!!!!希望国产UI越来越多

离线

#3 2020-04-21 16:10:39

novice
会员
注册时间: 2019-07-26
已发帖子: 112
积分: 93

Re: AWTK 1.4 发布

“UI 描述文件和主题文件使用高效的二进制格式,解析在瞬间完成。”

随着版本迭代,直接使用二进制格式导致的版本兼容性问题会让你焦头烂额,维护成本大大增加。

离线

#4 2020-04-21 17:45:46

a32425262
会员
注册时间: 2018-05-06
已发帖子: 104
积分: 401

Re: AWTK 1.4 发布

其实我比较喜欢啥都放在程序文件里面
至少可以让我这么选择
这样做出来的程序比较“干净”
不是一个文件夹里面很多文件
当然有必要的经常更换的配置文件等等

离线

楼主 #5 2020-04-21 17:48:57

lixianjing
会员
注册时间: 2019-04-25
已发帖子: 105
积分: 101.5

Re: AWTK 1.4 发布

novice 说:

“UI 描述文件和主题文件使用高效的二进制格式,解析在瞬间完成。”

随着版本迭代,直接使用二进制格式导致的版本兼容性问题会让你焦头烂额,维护成本大大增加。

是的,相信很多人都吃过这个苦头。但是要具体情况具体分析,如果在运行时需要修改并保存的,就会存在你说的情况,因为新的代码需要兼容老版本的数据。

在 AWTK  中,这些资源都是只读的,资源数据每次都随代码同步更新,就不会有问题。

离线

#6 2020-04-21 22:42:53

jiangchun9981
会员
注册时间: 2019-07-31
已发帖子: 170
积分: 130.5

Re: AWTK 1.4 发布

STM32 的实例能不能基于官方的板子? 

都是野火这类的高价板子,

相信大部分人都用的官方的板子,看了讨论组,很难移植到官方的板子上面,而且都是STACK不够这类很难debug的问题

离线

#7 2020-04-21 23:26:54

novice
会员
注册时间: 2019-07-26
已发帖子: 112
积分: 93

Re: AWTK 1.4 发布

lixianjing 说:

是的,相信很多人都吃过这个苦头。但是要具体情况具体分析,如果在运行时需要修改并保存的,就会存在你说的情况,因为新的代码需要兼容老版本的数据。

在 AWTK  中,这些资源都是只读的,资源数据每次都随代码同步更新,就不会有问题。

如果资源配置信息比较大就可能需要跟代码分离储存(比如放SD卡、SPI 闪存等),已经出货的设备想单独升级固件就很容易会出兼容性问题。
升级固件的同时要求升级工程(UI描述数据),多数客户是不肯干的。

离线

#8 2020-04-21 23:31:18

AaronHo
会员
注册时间: 2020-03-08
已发帖子: 13
积分: 13

Re: AWTK 1.4 发布

今天第一次听到这个,搜了一下似乎还是比较厉害的。之前只知道ucGUI,emWin,Qt之类的。

离线

楼主 #9 2020-04-22 07:57:55

lixianjing
会员
注册时间: 2019-04-25
已发帖子: 105
积分: 101.5

Re: AWTK 1.4 发布

jiangchun9981 说:

STM32 的实例能不能基于官方的板子? 

都是野火这类的高价板子,

相信大部分人都用的官方的板子,看了讨论组,很难移植到官方的板子上面,而且都是STACK不够这类很难debug的问题

ZLG 是 NXP 的代理商,不太方便去大力支持ST的芯片。STM32几个平台的移植,可以看作是我个人行为,板子都是我自己掏钱买的,主要是验证AWTK的可移植性,并给需要的朋友一个参考。个人精力有限,希望大家一起完善。

最近编辑记录 lixianjing (2020-04-22 08:18:48)

离线

楼主 #10 2020-04-22 08:18:23

lixianjing
会员
注册时间: 2019-04-25
已发帖子: 105
积分: 101.5

Re: AWTK 1.4 发布

novice 说:

如果资源配置信息比较大就可能需要跟代码分离储存(比如放SD卡、SPI 闪存等),已经出货的设备想单独升级固件就很容易会出兼容性问题。
升级固件的同时要求升级工程(UI描述数据),多数客户是不肯干的。

谢谢你的建议,你说的情况确实存在。此时可以只升级变化的部分,如果资源没有变,就不用升级资源文件,也可以只更新变化的资源。

资源文件的变化,原因也有多种,格式变化只是其中一种(而且很少发生),有时资源本身就是需要更新的,比如界面重新设计了,用户禁止升级资源貌似不太合理。

资源文件是只读的,所以不用考虑之前的格式,直接覆盖就行了。我倒不觉得会『焦头烂额』。

AWTK的UI 描述文件和主题文件,在开发时都是使用的XML格式,由XML文件生成二进制文件,供运行时使用。以后我们会根据客户的需求提供多种选择,比如直接加载XML文件。

离线

#11 2020-04-22 08:38:24

a32425262
会员
注册时间: 2018-05-06
已发帖子: 104
积分: 401

Re: AWTK 1.4 发布

a32425262 说:

其实我比较喜欢啥都放在程序文件里面
至少可以让我这么选择
这样做出来的程序比较“干净”
不是一个文件夹里面很多文件
当然有必要的经常更换的配置文件等等

之前是我对awtk不熟悉

看了文档,有把资源文件直接编译到程序中

将资源生成常量数组直接编译到代码中时,其初始化过程为:

1.包含相应的数据文件。

#include "assets/inc/fonts/ap.data"
#include "assets/inc/fonts/default.data"
#include "assets/inc/fonts/default_ttf.data"
#include "assets/inc/images/bricks.data"
#include "assets/inc/images/checked.data"
...

2.将资源增加到资源管理器中。

  assets_manager_add(rm, font_ap);
  assets_manager_add(rm, font_default);
  assets_manager_add(rm, font_default_ttf);
  assets_manager_add(rm, image_bricks);
  assets_manager_add(rm, image_checked);
  ...

将资源放在文件系统中时,一般不需要特殊处理,不过可以用assets_manager_load预加载资源。如:

  assets_manager_load(rm, ASSET_TYPE_THEME, "default");
  assets_manager_load(rm, ASSET_TYPE_FONT, "default_ttf");

参考:demos/assets.c

离线

#12 2020-04-22 09:41:41

armstrong
会员
注册时间: 2019-04-10
已发帖子: 287
积分: 196.5

Re: AWTK 1.4 发布

百度云盘里最新是1.3 rc3,还没有1.4呢。

离线

#13 2020-04-22 10:15:08

村民
会员
注册时间: 2019-03-06
已发帖子: 42
积分: 12

Re: AWTK 1.4 发布

协议变了,可以免费商用了。哪天研究一下,做个产品

离线

#14 2020-04-22 11:43:27

Iven
会员
注册时间: 2018-04-10
已发帖子: 61
积分: 1

Re: AWTK 1.4 发布

村民 说:

协议变了,可以免费商用了。哪天研究一下,做个产品

可以免费商用吗?

离线

楼主 #15 2020-04-22 15:24:03

lixianjing
会员
注册时间: 2019-04-25
已发帖子: 105
积分: 101.5

Re: AWTK 1.4 发布

Iven 说:

可以免费商用吗?

可以

离线

楼主 #16 2020-04-22 15:25:25

lixianjing
会员
注册时间: 2019-04-25
已发帖子: 105
积分: 101.5

Re: AWTK 1.4 发布

armstrong 说:

百度云盘里最新是1.3 rc3,还没有1.4呢。

https://gitee.com/zlgopen/awtk 取1.4分支。

离线

#17 2020-04-23 09:33:08

jiangchun9981
会员
注册时间: 2019-07-31
已发帖子: 170
积分: 130.5

Re: AWTK 1.4 发布

我的板子STM32F429 DISCO,官方的板子,8MB DDR

想问下这块这么大的内存分配什么作用?  最少的数值多少? 我看见你移植的429RAW都是分配8MB,但我们的板子总共也就是8MB内存

#define MEM2_MAX_SIZE 8 * 1024 *1024
#define MEM2_ADDR (uint32_t*)0XD0000000 + 2 * 2 * 320 * 240

ret_t platform_prepare(void) {
  tk_mem_init(MEM2_ADDR, MEM2_MAX_SIZE);
   
  return RET_OK;
}

目前的现象都是FREERTOS 进APP_USER_GUI线程就跑丢了,不知道如何跟踪到什么地方?

离线

#18 2020-04-23 10:15:18

Iven
会员
注册时间: 2018-04-10
已发帖子: 61
积分: 1

Re: AWTK 1.4 发布

lixianjing 说:

可以

可以看商用许可的规则吗?

离线

#19 2020-04-23 10:28:07

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: AWTK 1.4 发布

LGPL理论上不能静态链接吧?那单片机上基本不能商用了,除非上Linux,以动态链接库的方式链接。

离线

楼主 #20 2020-04-23 12:22:55

lixianjing
会员
注册时间: 2019-04-25
已发帖子: 105
积分: 101.5

Re: AWTK 1.4 发布

达克罗德 说:

LGPL理论上不能静态链接吧?那单片机上基本不能商用了,除非上Linux,以动态链接库的方式链接。

其实不管怎么用,我们都不会追究法律责任,我们不靠这个赚钱。

如果移植到新的平台,我们希望能把移植部分的代码,放到github供其他朋友参考。当然你不开源,我们也不知道,知道了也不会追究法律责任。

对于大公司,如果希望完全合规,特别是要出口的企业,可以加入AWTK合作生态,签一个免费商用许可就行了。免费商用许可的基本条件是允许ZLG在宣传AWTK时,可以提到贵公司使用了AWTK。

离线

#21 2020-04-23 12:52:28

有梦的地方
会员
注册时间: 2020-03-17
已发帖子: 284
积分: 284

Re: AWTK 1.4 发布

lixianjing 说:

其实不管怎么用,我们都不会追究法律责任,我们不靠这个赚钱。

如果移植到新的平台,我们希望能把移植部分的代码,放到github供其他朋友参考。当然你不开源,我们也不知道,知道了也不会追究法律责任。

对于大公司,如果希望完全合规,特别是要出口的企业,可以加入AWTK合作生态,签一个免费商用许可就行了。免费商用许可的基本条件是允许ZLG在宣传AWTK时,可以提到贵公司使用了AWTK。

这个大赞!love awtk!

离线

#22 2020-04-23 22:24:05

wujique
会员
注册时间: 2018-10-30
已发帖子: 178
积分: 172

Re: AWTK 1.4 发布

我做有H750的板子,需要的话可以送你一块测试AWTK

离线

#23 2020-04-24 10:45:15

guzhengstar
会员
注册时间: 2020-01-12
已发帖子: 26
积分: 10.5

Re: AWTK 1.4 发布

这个开发工具也挺好的 正在学习AWTK 后期转用这款做ui

离线

楼主 #24 2020-04-24 11:28:37

lixianjing
会员
注册时间: 2019-04-25
已发帖子: 105
积分: 101.5

Re: AWTK 1.4 发布

wujique 说:

我做有H750的板子,需要的话可以送你一块测试AWTK

不用了,谢谢你。我有正点的429/767的板子,应该差不多。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn