| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import type { CapacitorConfig } from '@capacitor/cli';
- /**
- * Capacitor 配置 —— Android 打包的**唯一真源**(2026-11-15)
- *
- * ## 为什么 webDir 指到 dist/fmode-app-v2/browser
- *
- * 本项目是 Angular `@angular/build:application`,产物落在
- * `dist/<project>/browser/`。Capacitor 只认这个静态目录,
- * 所以必须先 `npm run build` 再用 `npx cap sync` 把它拷进 `android/app/src/main/assets/public/`。
- *
- * ## 为什么必须锁 server.hostname / androidScheme
- *
- * 🔴 这是打包后**最容易踩的坑**:
- * · 默认 `hostname = localhost`、`androidScheme = https` → origin 变成 `https://localhost`
- * · Capacitor 的 `_capacitor_file_` 协议下,WebView 对跨域请求的限制与浏览器一致
- * · 我们实测过 `s3.fmode.cn` / `server.fmode.cn` / `matrix.fmode.cn` 三个域名
- * 都能对 `https://localhost` 正常回 CORS 头,所以**直连可行**
- *
- * 锁死这两项是为了让 origin 稳定 —— 以后若要给平台报白名单,
- * 报的就是 `https://localhost` 这一个值,不会随版本漂移。
- *
- * ## 关于推送
- *
- * 本期**不接极光 SDK**(用户 2026-11-15 裁决)。原因见
- * `docs/02-design/plans/2026-11-14-手机端UX优化与Android打包方案.md`:
- * 没有服务端推送触发链路时,极光的核心价值(离线推送)用不上,
- * 本地通知用官方 `@capacitor/local-notifications` 即可。
- */
- const config: CapacitorConfig = {
- /** 🔴 用户 2026-11-15 拍板:一旦分发后改名 = 换签名 + 重装 */
- appId: 'cn.fmode.app',
- appName: 'Fmode',
- /** Angular 生产构建输出目录 */
- webDir: 'dist/fmode-app-v2/browser',
- /**
- * 追加 UA 标记。
- *
- * 服务端 / 埋点可以据此区分「Web 访问」与「App 内访问」,
- * 也方便线上排查时确认用户到底跑的是哪个壳。
- */
- appendUserAgent: 'FmodeApp/2.0',
- server: {
- /**
- * 固定为 https —— Android WebView 在 http 下会禁用部分能力
- * (Service Worker、部分安全上下文 API)。
- */
- androidScheme: 'https',
- /**
- * 固定 hostname:origin 稳定为 `https://localhost`。
- * 不去改它,避免 origin 随 Capacitor 版本漂移。
- */
- hostname: 'localhost',
- },
- android: {
- /**
- * 允许明文流量**关闭**(默认值,显式写出来是为了防止有人后来误开)。
- * 我们的后端全部是 https,没有例外。
- */
- allowMixedContent: false,
- },
- };
- export default config;
|