Files
2026-09-03 08:38:17 +08:00

8.6 KiB
Raw Permalink Blame History

uni-app 原生发行配置

H5 构建不依赖厂商证书。pnpm check:native 检查 AppID 基础格式、模块、隐私声明及 HTTPS/WSS 地址;不会验证开发者账号、AppID 归属或签名证书,这些仍由 HBuilderX/DCloud 打包流程校验。

  1. 在 DCloud 开发者中心创建应用,将实际分配的 AppID 写入 src/manifest.json 的 appid,不要自行拼造。预检兼容 7 位和 8 位十六进制后缀,保留当前项目已有的 AppID。
  2. 在 HBuilderX 的可视化 manifest 中配置应用包名、Android 签名证书和 iOS Bundle ID/证书。证书及密码不要提交到 Git。
  3. 按实际厂商填写微信/QQ登录、微信/支付宝支付和 UniPush 参数。客户端只展示后端 /api/v1/auth/oauth/providers 与 /api/v1/payment/channels 返回且已启用的渠道。
  4. 在 mobile/.env.production 配置 VITE_API_ORIGIN 和 VITE_WS_ORIGIN,预检和生产构建都会读取。终端/CI 显式注入的同名变量优先。域名必须具有有效 TLS 证书,反向代理须放行 /ws 升级连接。当前配置为 https://im.bchongw.com 和 wss://im.bchongw.com。
  5. Android 仅保留网络、定位、相机、录音和振动权限;iOS 的对应隐私用途说明已写入 manifest。首次使用能力时由页面按需申请,不在启动时集中索权。
  6. 运行下面的检查命令,再执行 pnpm build:app-plus 或使用 HBuilderX 云打包。

第三方 AppID、密钥、商户证书、短信签名和主体备案信息必须由真实主体申请,仓库不会提供可冒用的演示密钥。

在 HBuilderX 中导入及重新编译

本仓库的移动端是 Vue 3 CLI 工程。建议通过「文件 → 导入 → 从本地目录导入」选择 D:\web\age\im\mobile 整个目录,不要只选择 mobile/src。

  • 整个工程导入会使用项目依赖,并保留根目录的 vite.config.ts 和 .env 配置。
  • 只导入 src 也是 HBuilderX 支持的另一种方式,但会改用 HBuilderX 内置编译器,工程根目录和环境配置位置也会变化,不适合直接沿用本项目的 CLI 配置。
  • 如果日志标签显示 src - Xiaomi ...,请检查当前选中的是否是单独导入的 src 工程。无需删除源码,重新导入并选择完整的 mobile 工程即可。

停止旧的运行任务,保存文件,再从「运行 → 运行到手机或模拟器」重新运行。生成安装包则使用「发行 → 原生 App 云打包」,根据实际发布平台填写包名和签名材料;签名/云打包成功才代表生成 APK/IPA。

真机调试与生产环境

HBuilderX 提示找不到本地 Node.js

本机 Node.js 路径是 C:\nvm4w\nodejs\node.exe,版本 v22.22.0。2026-08-31 已确认 HBuilderX 的 Node 检测先调用 where node;原 PATH 遗漏 C:\Windows\System32,导致 where.exe 找不到,从而误报 Node 未安装。

已仅向当前用户 PATH 补入 C:\Windows\System32,原有条目保留,系统级 PATH 未改动。通过 HBuilderX 自带 Node 重现其检测步骤,已能找到本机 Node.js。修改前的 PATH 备份在仓库 .tools/hbuilderx-path-backup-20260831.json(不提交到版本库)。

保存文件并完全退出 HBuilderX,再重新打开完整 mobile 工程,使新进程读取更新后的环境变量。可在新终端验证:

where.exe node
node --version
npm --version

不要为解决这一提示删除项目依赖、修改 HBuilderX 插件或重复安装 Node。

接口域名

mobile/.env.production 用于发行构建;HBuilderX「运行到手机/模拟器」使用 development 模式,不读取 .env.production。已在 mobile/.env.development 配置部署服务,调试和发行均可访问 https://im.bchongw.com,消息地址为 wss://im.bchongw.com。测试操作会使用该部署环境的真实数据。

如需独立测试服务器,可在 mobile/.env.development.local 覆盖地址。H5 本地开发也会读取 development 配置,请明确选择所需后端:

VITE_API_ORIGIN=https://im.bchongw.com
VITE_WS_ORIGIN=wss://im.bchongw.com

连接开发电脑上的后端时需要手机可访问的 HTTPS 地址(也可使用可信的 HTTPS 开发隧道)。手机上的 127.0.0.1 指向手机自身,不是开发电脑。不要把后端密钥、数据库密码或商户私钥放进任何 VITE_ 变量,它们会被编入客户端。

dev:app-plus 现在按 --mode development 预检,build:app-plus 按 --mode production 预检,并输出实际 API/WS 地址。预检拒绝回环地址。运行时会区别提示接口配置错误、DNS 失败、证书失败和超时,不会关闭 TLS 证书校验。

VITE_H5_BASE=/app/ 仅用于 H5 网站,App 构建不会再沿用该网站子路径。环境文件读取位置固定为工程目录,不依赖 HBuilderX 启动时的工作目录。

检查与 App 资源编译

在 mobile 目录执行:

pnpm test:native-components
pnpm test:icons
pnpm test:native-config
pnpm type-check
pnpm check:native
pnpm build:app-plus
pnpm build:h5

当前 CLI 编译器将 App 资源输出到 dist/build/app,H5 输出到 dist/build/h5。App 资源不是已签名 APK/IPA;本次仅验证了资源编译,没有提交云打包、签名或安装到用户手机。

已修复的 switch 编译错误

原隐私设置和消息通知页面使用了 <switch v-model="...">,App Vue 编译时报 v-model can only be used on <input>, <textarea> and <select> elements。

两处均改为 :checked 配合 @change,在事件处理函数中用 event.detail.value 更新表单。已有的保存接口和样式保持不变,加载/保存期间禁止切换。回归测试覆盖全部 Vue 模板中的原生控件绑定,以及两个页面的开/关状态更新。

参考:switch 官方文档、CLI 与 HBuilderX 工程的区别、Vite 配置说明。

已修复的 App 内功能图标空白

2026-08-31:截图中头像和文字正常,但底部导航、发布加号、定位等图标一起缺失。原因在共享 src/components/AppIcon.vue:之前直接把 <svg>/<path> 放在 uni-app 模板中,App-vue 的组件渲染链路不支持这种写法。这不是 COS 图片链接问题,也不是应用桌面启动图标的问题。

现已改为标准 <view> 组件,使用内置的 SVG 图片数据作为 CSS 遮罩,保留原有 39 个图标的几何形状、空心/实心状态、主题颜色和尺寸;同时提供 -webkit-mask-* 样式。所有图形都在安装包的 JS 中,不需要外网图标地址、字体下载或额外的 static 文件拷贝。

验证方式:

# 在 mobile 目录执行。
pnpm test:icons
pnpm test:native-components
pnpm type-check
pnpm build:app-plus
pnpm build:h5

# 单独检查已经生成的 App 资源:
pnpm verify:app-icons

build:app-plus 已自动执行图标产物检查:必须包含内置 SVG 图片数据、双套遮罩属性和首页/附近/消息/动态/个人主页/聊天/会员 7 个页面的组件样式,不得残留原始 SVG 模板组件。

如需本地可视检查,可运行 node scripts/preview-icons.mjs,打开终端显示的本地地址。该预览直接编译实际 AppIcon 和 BottomNav 组件,使用隔离的未读数示例,不登录账号、不连接生产接口。可检查所有图标、深浅背景、实心切换、颜色切换和底部导航。此次浏览器手机尺寸预览的 51 个图标实例显示正常,颜色/实心切换和构建检查通过;未将浏览器结果当作 Android/iOS 真机验收。

如何让手机上的 App 使用修复

  1. 在 HBuilderX 选择完整的 D:\web\age\im\mobile 工程,保存所有文件并停止旧的运行任务。
  2. 真机调试:重新执行“运行到手机或模拟器”,让 HBuilderX 重新编译并同步资源。
  3. 安装包:重新执行“发行 → 原生 App 云打包”,安装新生成的包。更新网站、后端或只刷新手机上的旧 APK 不会替换包内组件代码。
  4. 如仍看到旧样式,先检查选中的工程路径以及打包时间;不要删除用户数据或卸载 App 来排查缓存。

本次生成的是 dist/build/app 资源,不是已签名 APK/IPA;没有提交云打包或安装到用户手机。需要在新包装到手机后确认底部五个图标及页面中的功能图标。

参考:DCloud 关于 App-vue 中 SVG 图片与模板标签的说明、CSS mask-image。