移动端构建
ITR 通过 Capacitor 把同一套 Web 代码打包成 Android / iOS 原生应用。Capacitor 配置见 capacitor.config.json:
json
{
"appId": "com.example.itr",
"appName": "itr",
"webDir": "dist"
}webDir 指向 Vite 的构建输出 dist/,即原生壳加载的网页资源来自这里。
前置条件
- 已安装对应平台的原生工具链:
- Android:Android Studio + Android SDK(
android/工程由 Capacitor 生成) - iOS:Xcode(仅 macOS 可用)
- Android:Android Studio + Android SDK(
- 全局或本地安装
@capacitor/cli(已在devDependencies中)。
同步 Web 产物到原生工程
先构建 Web 层,再把产物同步进原生工程:
bash
pnpm run sync
# 等价于:vite build && npx cap sync构建 Android
bash
pnpm run android
# 等价于:vite build && npx cap sync && npx cap build android首次构建会在 android/ 生成原生工程(该目录已被 .gitignore 忽略)。 之后可用 Android Studio 打开 android/ 进行签名、调试与发布。
构建 iOS
bash
pnpm run ios
# 等价于:vite build && npx cap sync && npx cap build ios当前
appId为示例值com.example.itr,正式发布前请改为你自己的反向域名, 并配置好签名证书。
注意事项
- 语音合成依赖
@capacitor-community/text-to-speech原生插件,在真机上可用; 模拟器或纯 Web 会走 Web Speech API 降级。 - 模型文件
public/models/*.task不会被打包进 git,但会进入dist/, 构建原生应用时需确保它已存在,否则翻译功能无模型可用。 - 移动端访问模型同样受路径影响:若
translation.js中的/models/...是绝对路径, 在 Capacitor 的capacitor://协议或子路径部署下可能需要调整(参见 FAQ)。