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