许久不见,干什么去了呢?上高中去了。(对于视频观众来讲)
高中一般来说都是住校的比较多,所以这又引出了另一个问题,如果 S(olar Network) 瘾犯了怎么办呢?没有关系,容我介绍 Project Solian™ Everywhere 一个项目致力于把 Solar Network App 也就是 Solian port 到各种平台以及设备。
这个项目将分为很多部分,此处容我先介绍最近实现的两部分。
Solian on your Wrist —— Solian for Apple Watch
Apple Watch 的应用生态其实大多数围绕着健康相关的展开,比如说 AutoSleep,以及什么压力检测和健身之类的 App。但是 watchOS 本质上也就是 darwin 内核的 iOS 精简版,再加上其可以使用 eSIM 的无线网络(虽然耗电特别快),给其带来和无限可能性。而且 Solian 有 iOS 版本,再有个 watchOS 版本也是理所当然的吧!
羊说 Solian 要有 watchOS 版,所以 Solian 就有了 watchOS 版本。
虽然 Solian 是个 flutter app,但是 watchOS 版本的开发和 flutter 其实没有太多关系,都是 iOS 原生的部分,所以也没有什么特别值得一题的问题;除了 watchOS 不支持有线传输数据,也没这个能力之外,所有数据都要靠无线传输很折磨以及 watchOS 上的网络连接一直不是很稳定之外没有什么问题。
接下来就到 Part I 的重头戏了 —— Sokai.
Solian on KaiOS —— Sokai
一说到手机,基本上现代人第一个想到的就是全屏幕的智能机了。有按键的都是属于历史的,尽管他们有个真实的名字 —— 功能机,但是大家还是喜欢把他们称一个具有“贬义”色彩的名字 —— 老人机。
一般的老人机是真的多很老登比如 MARCO 系统的,就只能用既定的内置功能,而且基本上那种的硬件配置极差,16MB RAM + 64MB Storage,对不是 GB 是 MB。基本上就是电子垃圾,除了有个入网许可之外。
但是这里面还是有一些不同的色彩的,比如说今天的主角 KaiOS。
About KaiOS
KaiOS 的前身是 Firefox OS,是专门开发出来针对 “下沉市场” 的。所谓 “下沉市场” 基本上就是穷人市场,给那些买不起智能机的人群使用的。其宣传的卖点也是将 “智能“ 带给 ”功能机”。你甚至曾经可以在 KaiOS 上刷 YouTube(可能是我的设备支持的 KaiOS 版本太老旧了导致谷歌停止支持了,也可能谷歌全部停止支持了 KaiOS),很神奇吧。
Mozilla discontinued 了 Firefox OS,然后 KaiOS 接续了这个任务,基本上就是 Firefox OS 然后更新更新浏览器内核,然后增加一些迎合时代的新功能。
Why KaiOS
说到 Firefox OS,你可能想到了另一个类似名字的操作系统,也是浏览器 + OS —— Chrome OS。而 Firefox OS 的理念也差不多,上面的 app 都是基于 web 技术开发的,再加上一些特别的 API 来访问一些底层功能。
这么做有很多优点,比如说开发者不用学习复杂的嵌入式也能完成这种设备的开发,也有完好的开发生态支持,原生支持 code push 等等。但是这也有一点点坏处,比如说运行效率低下,部分原生 app 都会卡顿的情况。
当然选择 KaiOS 更大的一个原因是它能运行在功能机上,而功能机相比智能机来说非常不引人注目,可以在学校耍起。
免责声明
本人充分理解并且严格遵守学校对于电子设备的管理规定,本文提到的只作为演示目的,为文章的下一部分作引子。不代表本人在现实中有违反校纪校规的这类行为。也请大家不要效仿。
How KaiOS
如上文所说,KaiOS 的开发是相当简单的,基本上就等于写网页。其最大的门槛不是技术,而是没有模拟器,要求你拥有一台实体机。但是相比 Apple 平台的开发门槛来说,这简直太低了。
我的设备时 Nokia Flip 2720,其运行的是 KaiOS 2.5,是 KaiOS 从 Firefox OS 继承衣钵之后的第一个版本。非常古老,也至于其的浏览器内核非常古老,Gecko 48,很多现代功能都不能用。而且你不能更新 KaiOS,因为一个机种就支持一个版本,更新的也跑不起来就是。
但是没有关系,前端工程师早就在适配 IE 的时候习惯了这种艰难的情况,我们有 Babel 和 Polyfill,只要把这些工具链设置好,我们照样可以用 Vue 3 + TypeScript 舒舒服服的写。
简简单单的用 vite 配置完这些工具链,就可以正式的开始开发了。就当正常网页 app 写就好,但是不要用 vue-router,KaiOS 没有 Browser History 相关的 API,至少我这个版本没有。所以直接手动处理一下页面的事情就好了。
关于调试,我大部分时间都是在用浏览器调试的,部分情况打包一下放到实体机就好了。
KaiOS 的 app 和 PWA 很类似,你需要有一个 manifest,在 KaiOS 这里是 .webapp 的一个 JSON 文件,比如下面这个:
{
"version": "0.2.0",
"name": "Sokai",
"description": "The Solar Network app for KaiOS. The Sekai of Solar Network, S(e)okai.",
"launch_path": "/index.html",
"theme_color": "#5e6a9e",
"icons": {
"16": "/img/icons/icon16x16.png",
"48": "/img/icons/icon48x48.png",
"56": "/img/icons/icon56x56.png",
"60": "/img/icons/icon60x60.png",
"84": "/img/icons/icon84x84.png",
"112": "/img/icons/icon112x112.png",
"128": "/img/icons/icon128x128.png"
},
"developer": {
"name": "Solsynth",
"url": "https://solsynth.dev"
},
"type": "privileged",
"permissions": {
"systemXHR": {
"description": "Required to load remote content"
},
"audio-capture": {
"description": "Required to record voice messages in the app"
},
"speech-recognition": {
"description": "Required to dictate messages with the platform's speech service"
}
},
"installs_allowed_from": [
"*"
],
"locales": {
"es": {
"name": "Sokai",
"description": "La aplicación de Solar Network para KaiOS.",
"permissions": {
"systemXHR": {
"description": "Necesario para cargar contenido remoto"
},
"audio-capture": {
"description": "Necesario para grabar mensajes de voz en la aplicación"
},
"speech-recognition": {
"description": "Necesario para dictar mensajes con el servicio de voz del sistema"
}
}
}
},
"default_locale": "en"
}
怎么打包呢?虽然你可以从命令行进行,然后用 adb 安装到实体机上(对,是 adb,KaiOS 的开发者模式会暴露一个 adb 兼容的通道)。但是我更喜欢用 Web IDE,其在旧版本的 Firefox 中内置,在这里我推荐去下载 Waterfox Classic。其就包含了 Web IDE,
安装好 adb 和 Web IDE 之后,插入你的设备,打开开发者模式,应该就能够看到你的设备在列表中了。然后再 Open Project,找到一个有 .webapp 文件的目录就可以了。
但是我不推荐你打开项目的跟目录,因为 Web IDE 的逻辑是比较旧的,没有新时代的那些 node_modules 之类的,所以它默认会打包所有文件,所以我推荐打开 dist 目录。在配置一下编译自动拷贝 .webapp 文件进去就好了。
Demo on KaiOS
演示这一部分就想跳过好了,到时候再视频里再呈现。
基本上这就是 Solian Everywhere Pt.I 的全部内容了,整个开发 KaiOS app 的过程还是很有趣的。不过 Waterfox Classic 是一个 Intel app,macOS 28 就打不开了。也是标志着一个时代的落幕吧。
至于为什么不买个更新的 KaiOS 版本的设备,那是因为国内基本上能卖到的就只有 KaiOS 2.5,Nokia Flip 2720 和同时代的 Nokia Tough 800,后者是个三防手机,索然很符合诺基亚的特性,但是我觉得折叠的更酷一点。而且现在再也买不带崭新出场的 Nokia 了,都是 HMD 了,标志的开机音效和握手也没有了,不禁令人唏嘘。
Thanks for you reading.
