LCUI 2.1.0更新Android 支持计划已确认

LCUI 2.1.0 发布了。(站群域名注册:www.wzgame8.com整理)LCUI 是一个用 C 语言编写的图形界面开发库,可用于构建简单的桌面应用程序。

更新概要

本次更新共计支出 90 美元用于悬赏,合并了 4 个拉取请求,参与的贡献者有:vbalyasnyy、jduo。此外,LCUI 在 OpenCollective 上新增了一位赞助者,共计获得 50 美元捐款。

问题修复

wasm-ld: error: duplicate symbol: self (2b0424c)

display: rect_array 未被释放 (224c433)

gui: 部件销毁后未标记无效区域 (8e1f136)

gui: TextView_SetTextW() 段错误 (#195) (a10df88)

ime: 设置输入框文本光标时段错误 (0b644e1)

linux: 在窗口处于最小尺寸时渲染会出现段错误 (#200) (#201) (fa23f89)

mainloop: 将事件触发器从 OpenMP 并行循环中移出以解决主线程阻塞问题 (#204) (#205) (6978f46)

新功能

添加 settings 接口 (#191) (#211) (#212) (1b8c6e6)

Android 支持计划

作者已确认将 Android 支持列入开发计划,但由于作者并不是 Android 开发者,也不打算学习 Android 开发,所以,这项工作将由开源社区中的 Android 开发者完成,当然这并不是无偿的,完成这项工作的开发者将会获得一定数额的奖金。

之所以选择以悬赏的方式吸引贡献者,是因为在此前的几次版本更新中,有不少开发工作是以悬赏任务的形式交给其他开发者完成的,效果还不错,这也足以证明开源社区中有很多潜在的贡献者,他们有能力为开源项目做贡献,只不过是缺少足以驱使他行动的理由,而悬赏则是满足理由的最为简单直接的一种方式。

LCUI 在此之前一直是个人项目,可能是因为大家考虑到作者时间和精力有限,除了在 OSCHINA 评论区发点评论外,很少有除此以外的有实际意义的互动,例如:提出功能需求、改进意见、贡献代码。这种状态不利于开源项目的长期发展,因此,作者想借此机会尝试推动 LCUI 转变为由社区驱动的项目,让更多人能够推动项目发展,而不只是作者一个人。

接下来以问答的形式进一步说明。

为什么决定添加 Android 支持?

相信有些人也有相似的体会,安卓的某些应用占用存储空间和内存很大,明明它的界面很简单,性能却非常差,用起来着实让人火大,喷它也没意义,所以,为搞清楚原因,作者想基于 LCUI 写个 Android 应用来体验实际效果,以便确认是 Android 开发者技术水平的问题,还是他们用的 UI 框架有问题,又或者只是因为硬件配置低。

添加 Android 支持有什么意义?

拓宽 LCUI 的受众范围

让作者可以写 Android 应用

给 C 开发者多一种消遣方式,无聊时可以用 C 写个 Android 应用来打发时间

给 Android 开发者多一种选择,虽不能正式用在生产应用中,但可以用来研究和折腾

悬赏奖金有多少?

估计需要 1000 美元,除去 10% 的平台服务费和转账手续费,实际能获得 900 美元,奖金大部分由赞助者提供,也就是说实际奖金有可能超过 1000 美元,也可能低于 50 美元,如果你能完成这项工作但觉得奖金少的话,可以利用自己的知名度、人脉以及各种途径去推广,吸引更多的人赞助这项工作,毕竟能够拉到赞助也是一种能力。

那你这不就是炒作吗?

具体得看实际情况,如果有开发者要求的赏金低于 500 美元的话,作者会考虑直接全额支付赏金,当然,如果都要求 1000 美元以上那就只能等作者资金充足的时候再考虑了。

服务费这么高,为什么不考虑国内的赞助平台?

因为国外的赞助平台有很多流行开源项目在使用,积累的开发者也很多,在上面发布悬赏更容易推广吸引贡献者。而国内的话,某知名开源代码托管平台对这方面的支持欠缺,只有简单的打赏功能,虽然近期有举办过悬赏的活动,但活动奖金固定且活动只持续一小段时间,无法满足现在这种需求。至于其它类似平台,作者不了解。

如果我想负责这项工作,需要做什么准备?

先在 issuehunt.io 上提交你的期望奖金,然后在 issue#210 页面中发评论表示愿意负责这项工作,等一段时间后由作者决定由谁负责。如果你有相关问题需要咨询,也可以写在评论中。

如何为这项工作赞助资金?

在 issuehunt.io 上追加奖金即可,如果你想为 LCUI 的未来开发工作提供资金赞助,也可以在 OpenCollective 上进行赞助。

如果这项工作一直没人赞助怎么办?

现在的主要目的是找到有意向做这项工作的开发者,了解到他们期望的奖金数额,至于赞助的事情要等之后再考虑。

做这项工作能获得什么好处?

获得一定奖金

积累 C 和 Android 开发经验

向开源社区的开发者展示你的技术水平

你的名字和链接将被展示在 README 文档和官网首页中

从上述的几个好处来看,这项工作最适合时间充足、有一定编程能力但需要积累实战经验的计算机专业学生,能让他们在锻炼编程能力的同时顺便赚点零花钱。

这项工作的内容是什么?

工作清单如下:

驱动

视频驱动

触屏驱动

键盘驱动

主循环(UI 线程)

接口

DPI 获取接口

屏幕分辨率获取接口

系统信息获取接口

文档

技术文档,介绍安卓端支持技术实现方案

开发文档,介绍如何基于 LCUI 开发 Android 应用,以及如何调试

示例

添加 Android 示例项目,移植现有的 helloworld 示例程序即可

CI 服务

编译 Android 示例项目为 apk,并将其上传到 GitHub Actions 制品列表 (Artifacts) 以供下载

在 Android 模拟器安装运行 apk,并将截图发送到 commit 页面的评论中,或 GitHub Actions 制品列表中

其它

代码结构合理,命名规范,易于阅读和维护,至少能让作者看懂

关于 Android 端的驱动,可以参考 SDL 的源码:

https://github.com/SDL-mirror/SDL/tree/master/src/video/android

这点程度的 Android 支持还不够,后续还有其它计划吗?

先等这项工作完成后再考虑,届时将会规划项目发展路线图。