Zhangjian He
← Blog

从大学学Android说起,随便聊聊GUI框架和技术路线

本页目录

笔者2015年开始学习Android开发,跟着淘宝上买的“极客学院课程”(还是淘宝上买的课程便宜)。那时候还买过“NightSilent”的课程,几百块,就是给你发一些传智教育的教程,我记得当时还发给过他一些感悟,当时看了几节课,给他发了一个什么“我觉得这些东西都是把数据从后台传输到前端”,好像他也没回,后来还在知乎上看到还有人喷他来着😄。

Anyway,那时候我觉得Web后台很枯燥,买了几本Android的源码书之后,满脑子想的都是买一个Google Pixel,自己编译自己的Android系统。距今已经10年了,还是没买过,Pixel也挺贵的哈哈。

我入职后不久,跟李雪聊起来Android开发,我跟他吹嘘了一下,我很精通Android自定义控件,那时候琢磨什么现在也不太记得起来了。

李雪说:“不就是True、False么” 确实是,Android自定义控件的核心就是View、ViewGroup的True、False机制。

后面工作之后,也写过一些GUI小工具,写的比较多的,用过Flutter、Jetbrains Compose、Tauri,最近也在尝试用Rust+GPUI Kit,摸过的就更多了,tkinter、JavaFX、Electron、Electrobun、Fyne、Dioxus、Swing等。

在写了这么多GUI小工具之后,也想给大家分享一下GUI技术栈、GUI的取舍,尝试画了画,发现没有AI画的好。

软件包体积

体积上肯定是复用了系统WebView的最小,除了基于Browser的Electron会到100多MB以外,其他的体积都还好。

如果用Embedded WebView的方式,那我的建议是不如用绘制引擎的方案,因为看不到任何好处。用绘制引擎的体积也不会特别大,有些语言打包的时候会带一个Runtime,比如PyWebview,体积就要多个几MB。

开发效率

开发效率往往被很多人忽视,支持热更新、成熟的组件库、成熟的解决方案、编译速度都很重要。不要只盯着开发语言和软件包体积,也要关注开发效率。

Tauri

网红框架,不过一些简单的桌面产品,面向的都是很新的系统,不考虑Windows7啊那些,用Tauri没错的,LLM生成Tauri、Electron程序我相信就像喝水一样容易。