使用 Web 技术栈绘制 GUI 基本上已经成为公认的、成本效益最为平衡的一种解决方案。无论是桌面端、移动端,甚至是你在使用的操作系统也充斥着大量的 WebView。从十年前(掰手指——)我还是大学生的时候这股「妖风」就刮了起来,Intel 造了个叫做 XDK 的东西, IBM 甚至还自己裁切了一个叫做 CrossWalk 的嵌入式 WebView 引擎(虽然现在已经没人维护了)。
经历了这么多年的发展,在移动端用 Web 技术栈开发混合程序依然是一个非常麻烦的事情。造成这一景象的原因有两方面,一方面是 Chromium 本身与 Android 系统高度耦合(Android 里有些 API 是专门给 Chromium 做的)、内部工程实践混乱、剪裁难度极大,另外一方面,Android 本身碎片化非常严重,各中「发展中国家」「自研」的「OS」还会用各种方式作妖,比如之前臭名昭著的 MIUI ,内置浏览器虽然看起来规矩,但是会假装自己是高版本浏览器,还有一些民间 ROM 会裁掉一些浏览器的 API,也不知道是为了什么。