为了不被烦人的搜狗输入法打扰,老夫最近是终于卸载搜狗使用上微信输入法了,作为技术人员,自然是关心关心输入法这种级别的软件是什么技术开发的,特别是跨平台支持Windows、macOS、iOS和Android各种操作系统的这种软件。

微信作为大厂,不使用第三方框架和技术,自己使用原生开发也绰绰有余,如果使用跨平台开发框架,Qt框架是我认为的首选项,毕竟Qt是C++这种较为底层的高性能语言开发的,其次微信的4.0新版本就是使用Qt重构的,作为微信的旗下产品,使用Qt不是最佳选项吗?不过查看了软件包,才发现,微信输入法居然使用的是Flutter。

打开微信输入法的软件包安装目录,就能看到Flutter的资源目录,还有flutter_windows.dll这个动态链接库。
Flutter是跨平台的,一套UI代码能适配不同平台打包,不过我再次查看Android版本的安装包,解压以后发现,里面没有Flutter的动态链接库,但是它居然又是另一个跨平台框架:React Native的动态链接库,和Flutter一样,Native是主UI层的跨平台库,既然都使用这种跨平台框架了,各个端居然不是同步使用,看来开发团队和技术选型也是较为混杂。

当然,Flutter主要是设置页面的GUI可视化窗口部分,至于输入法的内核,自然是需要底层框架来实现的。

可能是使用了各种跨平台的框架,目前这些跨平台框架也没有完美支持华为鸿蒙Next系统,所以微信输入法目前也没有华为鸿蒙的版本。