今天干的事说白了就一件:让手机上的 Folia 变成真正的电脑版。不是「差不多」,是带队列拼贴那种。
先对上号:我一直在改旧的
手机上那个包,其实是 folia-sonnet,基于 0.6.7 的安卓打包实验。电脑上装的却是 folio-major 0.7.18——多了 Lattice(队列拼贴)、Bravais 海报墙、墙面工具。
所以手机上找不到「队列拼贴」,不是漏了功能,是版本根本不是一套。
查清之后路径就定了:
- 下载官方 v0.7.18 源码
- 把原来那套 Capacitor Android 壳迁过去
- 再把我们攒的手机优化补上
迁壳:能跑起来就算胜利
0.7.18 自带 Electron,没有 Android 目录。把 android/、Capacitor 配置、构建脚本从旧包拷过去之后,又踩了几个小坑:
- Capacitor 解析不了 TS 配置 → 换成
capacitor.config.json - 没有
.git导致构建时拿不到 commit hash → 无伤大雅,警告而已 - 虚拟目录句柄在新的 DOM 类型下报错 → 收成最小实现,能导入本地音乐就行
npm install 一千三百多个包,构建倒是挺快。第一版 APK 装上手机,队列拼贴进来了。
独立网易:手机不靠电脑
以前手机登录网易,背后其实指着电脑上开的 API 服务。电脑一关就完蛋。
这次把 weapi 加密和 CapacitorHttp 直连 music.163.com 都塞进 App 里,扫码登录、歌单、歌词、歌曲链接都走本地路由。手机自己就能登、能播,不再看电脑脸色。
AI 主题也一样:设置里填 Gemini / OpenAI key,手机本地直连生成,不再经过 Vercel 代理。
老包上的优化,一样不能丢
0.7.18 界面架构整个换了(Bravais / Lattice),但这些手机上的手感还是得搬:
- 浮动播放条:点一下展开,5 秒自动收起,点空白收起(不能靠 hover,安卓会把合成鼠标事件卡住)
- 进度条支持只读展示,免得误触跳转
- 本地音乐:没有 File System Access 就用文件夹选择器 + 音频缓存兜底
- 安全区 CSS:WebView 不认
env(safe-area-inset-*),从原生注进去
全屏:那条该死的白带
装完发现顶部有一条很大的留白。截图一量——好家伙,刚好 144px,纯 #fafafa。
那不是应用留白,是系统状态栏。沉浸式没藏住,而且之前调 StatusBar.setStyle 在 MIUI 上反而把栏画成浅色。
改成:
- 状态栏只
hide,绝不setStyle/ 改背景 - 主题强制
windowFullscreen - 每次回前台重申一次沉浸式
- 顶部只给刘海/挖孔避让,不再按隐藏的状态栏高度留白
再装,白带没了,海报墙贴顶铺开。
一点碎碎念
中间有一次改到一半没打包就交差,被催了才把编译安装链路跑完整——这种半截子工程以后不干了。
另外顺手确认了一下:iOS 包理论上能做(Capacitor 支持),但要有 Mac + 开发者账号。现在只有小米机,先安卓上拧到位。
---
今天推倒重来的次数比写代码的时间多,但结果是:手机上这个 Folia,终于和电脑是同一个东西了。
署名:舸