最近关于学业等等之类的事情忙里忙外的,很难抽出时间去更新博客,现在博客只能做到能想到什么就写什么了,在此我道个歉。

结论

先说结论:我说难听点,在国内 KaiOS 几乎无法占领市场,甚至这部分的市场还会被 Android 拿走。

KaiOS 是一个应用开发难度低但应用上限也低的系统,毕竟现在还没到 KaiOS 3.0,目前的 KaiOS 2.5 只支持 asm.js,不支持 WebAssembly 、不完全支持 ES6 等现代浏览器所支持的功能和标准,目前来看它的上限高不到哪里去。

为什么我会这么说,而且还是看起来像是暴论的结论,以下是原因(当然也有最近几天 Kaiostech 的一些让我不爽的行为):

1 、极其简陋的开发环境

2 、略显恶劣的运行环境(KaiOS 3.0 会有改观)

3 、(标注)过时的文档

4 、上架 KaiStore 中的各种迷惑行为

5 、我也不知道谁会去买的手机

极其简陋的开发环境

我说的简陋就是字面意义上的简陋,你只能用 Firefox 52.9 ESR 及其第三方衍生版本,如 Palemoon 28.6.1(Firefox 52.9 ESR),Waterfox Classic(Firefox 56)等使用旧版内核的浏览器(Firefox 57 开始使用全新的 Firefox Quantum,也就是量子火狐),Firefox 59 之后的版本都无法正常连接 KaiOS 2.5 的设备。

同时,在 Waterfox Classic 中发现 WebIDE 原有的代码编辑器已经被移除,无法直接对源代码进行修改,但这已经不影响开发了,因为就算保留了代码编辑器,那简陋程度跟记事本有得一拼的代码编辑器我也是一刻都不想用,就连 Kaiostech 都建议使用其他代码编辑器甚至 IDE 来代替 WebIDE 开发应用。

这个代码编辑器甚至无法高亮 ES6 语法,KaiOS 2.5 使用的底层是 Firefox 48.0a2,是部分支持 ES6 语法的,至少 letconst 是没问题的,但因为是部分支持,所以还是要按照 ES5 语法进行开发,这还不算什么太大的问题,按照 ES5 语法逻辑反而还更简单点。

但是这 “IDE” 应该叫不叫 IDE,看了这图,你觉得呢:

Snipaste_2021-07-13_14-31-45

这个 “IDE“ 就不该叫 IDE,不支持任何语言的智能提示(JS 的高亮都一塌糊涂,还指望它高亮 React 、 Vue 等框架的语法???),不支持格式化,不支持 ES6 以后的语法的高亮,不能调整缩进(只能是四个空格,不能调整为制表符或空格个数),甚至填写清单都没有任何提示,这都不能叫 IDE 了,叫高级版记事本还差不多。

但需要调试,修改设备设置,调整设备首选项等等依然需要它,所以我觉得叫 IDE 也不适合,叫 Debugger 更好。

对了,这个老版本还自带了 Firefox OS 模拟器,会对调试有一定的帮助,然而这个模拟器经常有恶性 bug,在一些系统中你根本无法运行它,有时候可以运行但你想要关闭模拟器再次打开时你会发现此时已经无法打开模拟器了(会报错,不管怎么点都报错),在 Linux 系统中会有所改善,但最后你都会选择使用真机调试(至少真机出问题的概率小多了)。

哦对了,Kaiostech 也有一个 KaiOS 的模拟器,是用 WebIDE 改的,这个模拟器也有恶性 bug,选择 320*240 全键盘布局时会崩溃闪退,无法调试,而且它只有 Linux 版(我有幸询问到了一位 Mozilla 员工,他表示这是因为在 Windows 的编译中有各种麻烦的问题,最后省事干脆放弃在 Windows 编译模拟器的打算了)。

而开发方面,只要你会熟练运用前端语言和主流前端框架,这些都不是问题(除了按键映射需要你自己来写以外),还有一些 Firefox OS 独占的 API,但独占的 API 不会影响你的代码,而且比微信那奇奇怪怪的小程序要简单不少。当然上限也不高,很多现代浏览器常有的功能它都没有(例如 WebAssembly)。

略显恶劣的运行环境

到 KaiOS 2.5(包括后面的 2.5.1 、 2.5.2 、 2.5.3 、 2.5.4 以及各种小版本号等等)为止,渲染内核都是 Firefox 48.0a2,由于当时 Mozilla 放弃 Firefox OS 时也停留在了这个版本(连 52 ESR 都没赶上,更何况量子火狐),这也就导致了另一个问题:支持不完全。

比如不支持 WebAssembly,asm.js 只能使用 C++ 编写也限制了开发人员的选择,这就影响了 KaiOS 的上限,没有 WebAssembly 实在不知道在这系统还能整什么花活(比如性能更高的模拟器,或者用于闭源的组件)。

有限的 ES6 支持反而是不太需要注意的事项,在这个系统里 React 、 Vue 、 Angular 等主流前端框架还是能够正常使用的,但由于内核版本过老,部分功能你可能需要引入 polyfill 来解决。

同时使用 KaiOS 的手机由于机能有限(骁龙 205 、骁龙 210 、 MT6572 、 MT6731 、 SC9820A 、 SC9820E 选一个哦),不能编写太过复杂的 Canvas,很容易崩溃,想做点动画也要考虑一下性能问题。

而且,还是因为 Firefox 老内核的原因,很多 CSS 新标准的支持一样是不完全,或者压根就不支持,同时 Firefox OS 下有独有 API,不推荐使用 Chromium 系内核的浏览器来进行测试。

(标注)过时的文档

现在去翻看 MDN 中与 Firefox OS 相关的文档,你会发现除了通用 API 以外,所有与 Firefox OS 相关的 API 全部被标注为 过时 (Deprecated) ,因为早在 2016 年 Mozilla 就放弃了 Firefox OS 的后续开发(直到 2021 年正式重启,协助 Kaiostech 更新内核版本),也因此相关的文档也被标记为过时。

尽管文档标记过时,但为了开发还是得翻,而且不仅标记为过时,一些没有被修改的链接直接把 404 Not Found 甩在脸上(虽然加个 /Archive 还是能看的,但也一样被标记为过时),很影响心情 : (。

至于 Kaiostech 提供的文档?他们自己的 API 文档都是来自 MDN 的(甚至还会引导你去 MDN 了解更多),除了翻看好受点其他没什么区别,而且为了封闭,还限制了一部分 API 的功能,总之关于 KaiOS 的文档少之又少,同时国内除了我们所在的群以外没有别的可以交流的地方,开发中遇到问题很多情况下只能自己想办法解决。

在我坑了半个月时间后,MDN 彻底删除了关于 Firefox OS 的 API 等相关文档,让开发雪上加霜

上架 KaiStore 中的各种迷惑行为

这件事是我最难以理解同时最讨厌的,我们的成员在将一些自制应用上架到 KaiStore 时,被要求必须插入 KaiAds,否则不会被允许上架,应用会被退回。

KaiAds 是 Kaiostech 推出的广告 SDK,虽然有可能并不需要真的使用它,但我们并不喜欢在我们自己制作的应用中插入广告,又或者是一些没有必要的脚本,但上架应用商店必须插入广告对于我们来说就是奇怪的迷惑行为,因为我们还是第一次知道上架应用必须插入广告的。。。。。。

也因此我们所制作的一些应用因为法律、灰色地带等原因无法上架到商店,也不会上架到商店,这也使得我们决定自己搭建和运营一个商店,在这里感谢 BananaHackers 成员的商店相关项目,同时我们也在积极改进来自他们的商店项目。

我也不知道谁会去买的手机(仅限国内)

在中国,只有 HMD 在销售 KaiOS 手机,而且也因为生态和体验问题,让它在国内的地位非常尴尬。

比上不如 Android / iOS,比下不如 Mocor 系的真-功能机,没有 Android / iOS 的命却得了 Android / iOS 的病,续航实际上非常差。我手上的诺基亚 8110 4G 现在在飞行模式下的待机都只能撑两天,开热点甚至只能维持 4 个小时,诺基亚 2720 Flip 的情况稍好,但也就只能维持 6-7 小时。

QQ / 微信?别想了腾讯怎么可能会去做这种不赚钱的事情。

支付宝?那是诺基亚 105 4G(Series 30+ Mocor)的支付宝,跟 KaiOS 能有个什么关系。

而且在价格上非常没有优势,例如诺基亚 6300 4G 平时的售价是 399 元(活动价 299 元),但这个价格可以买到多亲 F21s,性能更好功能更多更实用,虽然安装第三方应用会受到限制,但总比没有第三方应用强。

诺基亚 8000 4G 的首发价更是来到了 699 元,后来降价到 599 元,但这让它更尴尬的是这个价位智能机有红米 8A 、红米 9A 、多亲 2 Pro,还有同样拥有实体键盘的多亲 F21 Pro 。

而且经过实际测试,HMD 现售的 KaiOS 系统手机均全程运行在 240*320@30 FPS 下,流畅度甚至无法与同价位智能机相当,这性能。。。。。。

这也让这些手机的面向人群越来越模糊。

学生机?HMD 自己出的搭载 S30+ 系统的真-功能机可能更适合,更何况还有多亲的存在。

老人机?字体小按键小声音也比国内产商制作的老人机小,更不能给老人用。

备用机?它们的续航连当作备用机都不合格。

所以,这些 KaiOS 手机面向的人群可能只有以下人群了:

  1. KaiOS 应用开发者
  2. 小众系统爱好者
  3. 诺基亚情怀党
  4. 只想体验 KaiOS 系统的普通用户
  5. 确实需要热点功能的用户
  6. 手机评测的自媒体

正如 差评 所说的一样,KaiOS 只是一款用于过渡的系统,它的存在仅仅是为了在功能机向智能机过渡的过程中提供选择,再加上 Google 这几年一直在对低端机大力推广 Android Go,KaiOS 的份额也在不断下滑。截止到 2021 年 7 月,KaiOS 在全球市场的份额仅有 0.19{4adef2c7dd6a811ff1907525de0c68a67df8c831b3dae56d5e732de917a75894} 。

在印度曾经超过了 iOS 的 KaiOS 份额更是下滑到了 0.98{4adef2c7dd6a811ff1907525de0c68a67df8c831b3dae56d5e732de917a75894},iOS 重回第二。。。。。。 Android 的份额更是达到了 95.74{4adef2c7dd6a811ff1907525de0c68a67df8c831b3dae56d5e732de917a75894} 。

(以上数据均来源于 GlobalStats Statcounter)

毕竟。。。。。。过渡嘛,总会过去的。

最后

以上都是我在参与了部分 KaiOS 应用开发后的感慨,虽然不会放弃对它的支持,但也仅仅只是作为兴趣,对于我们来说,KaiOS 只是作为玩具的存在,虽然运气好也就在简历上加几条而已的程度。

以现在的市场环境,KaiOS 的未来也充满了大量不确定性,不得不保持观望,如果你对 KaiOS 应用的开发感兴趣的话,我也建议你只用于练手,靠它参与工作并不现实。