App 版本管理上线步骤
数据库与后台
- 备份目标业务库,选择该库后执行同目录
20261111_app_version_management.sql。脚本创建可信包、发布记录、逐版本灰测名单三张表,并复用或创建版本管理菜单。已执行过旧版建表脚本的环境另执行20261111_app_version_multi_platform.sql,扩展平台字段并增加按平台唯一索引。 - 发布包含本次改动的 Java 服务。默认 AppID 为
__UNI__0A84F60,如需覆盖,设置yudao.member.app-version.app-id。 - 管理员在既有角色管理和租户套餐中,按职责分配版本页面及查询、新增、编辑、删除、发布五项权限,重新登录后台刷新权限。超级管理员使用现有权限机制访问。
- 发布 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/独立路径。通用文件上传、预签名和删除入口保护该路径,避免覆盖已校验文件。
原生基座与后续发布
- 首次交付发行前,在
manifest.json设置高于已发行版本的新版本码与版本名,再重新打包含 Record、Barcode、更新入口及本次权限声明的原生基座,使用原有发行渠道安装。具体发行号码由既有发行流程确定。保留 Android 包名及签名、uni-app AppID 和 iOS Bundle ID。 - Android 的 APK 原生版本码、APK 内资源版本码分别从实际包清单读取。WGT 资源版本从编译后的根
manifest.json读取。 - 上传 WGT 时沿用原生基座相同的打包工具链,多选目标平台并填写最低原生基座版本码,最高版本码可空。新增原生插件、SDK 或权限时先发新基座,并让 WGT 的最低基座要求与实际原生能力一致。
- 一个 WGT 只需上传一次,可通过同一条发布记录同时更新 Android 和 iOS,使用相同 packageId、下载地址、说明及灰测名单。Android 可发布 APK/WGT,iOS 和 Harmony 可发布 WGT。APK 目标固定为 Android。Harmony 客户端同时具备
uni.installWgt、uni.restart、getFileInfo能力后启用热更。实人 SDK 目前覆盖 Android/iOS。 - 资源版本相同时优先提供兼容的 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 打包及设备行为需要专项验证。