Files
Friendship-and-chat-api/sql/mysql/app/README.md
T
2026-11-11 19:39:10 +08:00

45 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# App 版本管理上线步骤
## 数据库与后台
1. 备份目标业务库,选择该库后执行同目录 `20261111_app_version_management.sql`。脚本创建可信包、发布记录、逐版本灰测名单三张表,并复用或创建版本管理菜单。已执行过旧版建表脚本的环境另执行 `20261111_app_version_multi_platform.sql`,扩展平台字段并增加按平台唯一索引。
2. 发布包含本次改动的 Java 服务。默认 AppID 为 `__UNI__0A84F60`,如需覆盖,设置 `yudao.member.app-version.app-id`。
3. 管理员在既有角色管理和租户套餐中,按职责分配版本页面及查询、新增、编辑、删除、发布五项权限,重新登录后台刷新权限。超级管理员使用现有权限机制访问。
4. 发布 PC 管理端,通过版本页上传包并保存草稿。上传会识别包的 AppID、版本与包类型,版本元数据由服务端产生。WGT 默认勾选 Android 和 iOS,发布时可调整目标。
## 大包文件存储
- OSS/S3、本地、FTP、SFTP 使用文件或输出流传输,专用版本包接口允许最大 512MB。普通上传和导入限制为单文件 16MB、总量 32MB。
- 数据库文件存储使用 MEDIUMBLOB,最大文件为 16,777,215 字节。大 APK 上传时先把默认文件存储设置为 OSS/S3、本地、FTP 或 SFTP。
- Servlet 安装包直接落盘,预留临时目录空间。部署代理的请求体限制至少覆盖 520MB,并让前端上传超时和代理等待时间覆盖上传、识别及写入存储的实际耗时。
- 下载地址来自既有存储配置。生产环境使用设备能够访问的 HTTPS 地址,同时核对域名证书及 iOS/Harmony 原生网络配置。
- 版本包进入 `version-packages/` 独立路径。通用文件上传、预签名和删除入口保护该路径,避免覆盖已校验文件。
## 原生基座与后续发布
1. 首次交付发行前,在 `manifest.json` 设置高于已发行版本的新版本码与版本名,再重新打包含 Record、Barcode、更新入口及本次权限声明的原生基座,使用原有发行渠道安装。具体发行号码由既有发行流程确定。保留 Android 包名及签名、uni-app AppID 和 iOS Bundle ID。
2. Android 的 APK 原生版本码、APK 内资源版本码分别从实际包清单读取。WGT 资源版本从编译后的根 `manifest.json` 读取。
3. 上传 WGT 时沿用原生基座相同的打包工具链,多选目标平台并填写最低原生基座版本码,最高版本码可空。新增原生插件、SDK 或权限时先发新基座,并让 WGT 的最低基座要求与实际原生能力一致。
4. 一个 WGT 只需上传一次,可通过同一条发布记录同时更新 Android 和 iOS,使用相同 packageId、下载地址、说明及灰测名单。Android 可发布 APK/WGT,iOS 和 Harmony 可发布 WGT。APK 目标固定为 Android。Harmony 客户端同时具备 `uni.installWgt`、`uni.restart`、`getFileInfo` 能力后启用热更。实人 SDK 目前覆盖 Android/iOS。
5. 资源版本相同时优先提供兼容的 WGT。WGT 基座不兼容时可以选择 APK,APK 必须提高原生版本并保持资源版本不降级。
## 灰测与验收
- 每个版本独立选择会员,支持沿用历史名单。灰测用户通过真实 App 登录身份识别,游客只能取得全量版本。
- 使用同租户的名单内会员、名单外会员和游客分别检查更新,再验证另一租户的隔离行为。
- 检查草稿、发布、下架、灰测转全量、重复操作以及更高版本发布后的结果。名单和发布状态变化会在下次检查、下载前验证、安装前验证时生效。
- 验证普通与强制更新、断网、下载失败、校验失败、空间不足、安装权限拒绝及设置页返回重试。下载文件同时核对真实长度和摘要。
- 检查 Android 8+ 安装来源权限流程,真机验证 APK 安装和 Android/iOS WGT 安装后重启。Harmony 通过实际目标 SDK 和设备验证能力。
- 下架可以停止后续分发。已安装版本通过更高资源版本的修复包处理。
## 本地验证记录
- 后端相关回归共 75 项通过,覆盖二进制 AndroidManifest 解析、WGT 编译清单、双摘要、基座兼容、同资源 WGT 优先、资源防降级、名单校验、状态限制、租户 SQL 条件重写、流式存储和普通上传容量保护。多平台回归验证同一发布编号、packageId 和下载地址在 Android/iOS 的检查及安装前验证中可用。
- 新表有效唯一键通过 H2 MySQL 模式验证多轮名单替换、删除重建、并发目标重叠和租户维度。独立 MySQL 5.7 临时库验证了新建表、原单平台记录升级、升级脚本重复执行、双目标精确查询、同版平台重叠拒绝、不重叠目标及跨租户允许、逻辑删除后重建和字段宽度。生产迁移、OSS 网络链路及真机更新验收需在目标环境完成。
- APK 原生清单采用有界随机读取,资源引用版本名按资源 ID 定向定位。已覆盖损坏计数、字符串长度与命名空间校验,15 项包解析测试通过独立 64MB 堆内存验证。
- PC 真实组件通过模拟接口浏览器验证,包含列表、发布抽屉、跨页会员选择、复制、保存、深色和 375px 小窗口。新增文件的类型检查及 ESLint 通过,整仓类型检查遇到 4GB 堆内存耗尽。
- uni-app 的 App、Harmony 目标资源、H5 和微信小程序编译通过,更新、原生适配、权限、录音和账号会话回归共 40 项通过。目标 TypeScript 文件检查通过,全量类型检查受既有 allowJs 配置与 uview-plus 语法问题阻断。
- Java 聚合打包使用当前工作区,其中同时存在推送相关改动。发行前按当前工作区整体核对发布内容。
当前开发环境未连接 Android 真机或运行中的 iOS 模拟器。安装权限、APK 实际安装、WGT 原生安装与重启、录音、扫码及人脸授权流程均待目标真机验收。Harmony NEXT 已覆盖能力检测分支和目标资源编译,原生 SDK 打包及设备行为需要专项验证。