11
This commit is contained in:
1 parent
a099e72517
commit
fc36d1b17a
96 files changed
+6804
-209
No files matched your search
@@ -0,0 +1,106 @@
|
||||
-- App 可信安装包、版本发布及逐版本灰测名单。适用于 MySQL 5.7/8.0。
|
||||
-- 选择目标业务库后执行,先备份。此脚本只创建新表与菜单,不发布版本、不改写会员。
|
||||
-- 重复执行安全。部署顺序为执行脚本、发布 Java、分配菜单权限、发布 PC、重新打原生基座。
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `member_app_version_package` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '可信包编号',
|
||||
`app_id` varchar(100) NOT NULL COMMENT 'uni-app AppID',
|
||||
`platform` varchar(64) NOT NULL COMMENT '规范CSV目标平台,android/ios/harmony',
|
||||
`package_type` varchar(8) NOT NULL COMMENT 'apk/wgt',
|
||||
`file_name` varchar(255) NOT NULL COMMENT '原始文件名',
|
||||
`file_size` bigint NOT NULL COMMENT '文件大小,字节',
|
||||
`sha256` char(64) NOT NULL COMMENT '真实文件SHA-256',
|
||||
`md5` char(32) NOT NULL COMMENT '原生运行时文件校验MD5',
|
||||
`download_url` varchar(2048) NOT NULL COMMENT '已有存储生成的地址',
|
||||
`version_code` int NOT NULL COMMENT 'APK原生版本码或WGT资源版本码',
|
||||
`version_name` varchar(100) NOT NULL COMMENT '包清单版本名',
|
||||
`native_version_code` int DEFAULT NULL COMMENT 'APK原生基座版本码',
|
||||
`resource_version_code` int NOT NULL COMMENT '包内资源版本码',
|
||||
`package_name` varchar(200) DEFAULT NULL COMMENT 'APK原生包名',
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted` bit(1) NOT NULL DEFAULT b'0',
|
||||
`tenant_id` bigint NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_app_package_tenant` (`tenant_id`, `app_id`, `platform`, `package_type`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='App可信安装包';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `member_app_version` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '版本发布编号',
|
||||
`package_id` bigint NOT NULL COMMENT '可信包编号',
|
||||
`app_id` varchar(100) NOT NULL COMMENT 'uni-app AppID快照',
|
||||
`platform` varchar(64) NOT NULL COMMENT '规范CSV目标平台,android/ios/harmony',
|
||||
`package_type` varchar(8) NOT NULL COMMENT 'apk/wgt',
|
||||
`version_code` int NOT NULL COMMENT '按包类型比较的版本码',
|
||||
`version_name` varchar(100) NOT NULL COMMENT '展示版本名',
|
||||
`native_version_code` int DEFAULT NULL COMMENT 'APK原生基座版本码',
|
||||
`resource_version_code` int NOT NULL COMMENT '目标资源版本码',
|
||||
`package_name` varchar(200) DEFAULT NULL COMMENT 'APK原生包名',
|
||||
`update_content` text NOT NULL COMMENT '纯文本更新说明',
|
||||
`force_update` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否强制更新',
|
||||
`release_scope` varchar(16) NOT NULL DEFAULT 'all' COMMENT 'all/members',
|
||||
`status` varchar(16) NOT NULL DEFAULT 'draft' COMMENT 'draft/published/offline',
|
||||
`min_native_version_code` int DEFAULT NULL COMMENT 'WGT最低兼容基座,包含边界',
|
||||
`max_native_version_code` int DEFAULT NULL COMMENT 'WGT最高兼容基座,NULL无上限',
|
||||
`publish_time` datetime DEFAULT NULL COMMENT '最近发布时间',
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted` bit(1) NOT NULL DEFAULT b'0',
|
||||
`tenant_id` bigint NOT NULL DEFAULT 0,
|
||||
`active_unique_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 THEN 1 ELSE NULL END) STORED COMMENT '有效记录唯一标记',
|
||||
`android_active_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 AND LOCATE(',android,', CONCAT(',', `platform`, ',')) > 0 THEN 1 ELSE NULL END) STORED COMMENT 'android有效目标唯一标记',
|
||||
`ios_active_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 AND LOCATE(',ios,', CONCAT(',', `platform`, ',')) > 0 THEN 1 ELSE NULL END) STORED COMMENT 'ios有效目标唯一标记',
|
||||
`harmony_active_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 AND LOCATE(',harmony,', CONCAT(',', `platform`, ',')) > 0 THEN 1 ELSE NULL END) STORED COMMENT 'harmony有效目标唯一标记',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_app_version_active` (`tenant_id`,`app_id`,`platform`,`package_type`,`version_code`,`active_unique_flag`),
|
||||
UNIQUE KEY `uk_app_version_android_active` (`tenant_id`,`app_id`,`package_type`,`version_code`,`android_active_flag`),
|
||||
UNIQUE KEY `uk_app_version_ios_active` (`tenant_id`,`app_id`,`package_type`,`version_code`,`ios_active_flag`),
|
||||
UNIQUE KEY `uk_app_version_harmony_active` (`tenant_id`,`app_id`,`package_type`,`version_code`,`harmony_active_flag`),
|
||||
KEY `idx_app_version_check` (`tenant_id`,`app_id`,`platform`,`status`,`resource_version_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='App版本发布';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `member_app_version_member` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`version_id` bigint NOT NULL COMMENT '版本发布编号',
|
||||
`member_id` bigint NOT NULL COMMENT '真实会员主键',
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted` bit(1) NOT NULL DEFAULT b'0',
|
||||
`tenant_id` bigint NOT NULL DEFAULT 0,
|
||||
`active_unique_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 THEN 1 ELSE NULL END) STORED,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_app_version_member_active` (`tenant_id`,`version_id`,`member_id`,`active_unique_flag`),
|
||||
KEY `idx_app_version_member_lookup` (`tenant_id`,`member_id`,`version_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='逐版本灰测会员';
|
||||
|
||||
-- 优先复用既有 app/version/index 菜单及其父目录,保留已分配角色关系。
|
||||
SET @app_version_menu_id = (SELECT MIN(id) FROM system_menu WHERE component = 'app/version/index' AND deleted = 0);
|
||||
SET @app_parent_id = (SELECT parent_id FROM system_menu WHERE id = @app_version_menu_id);
|
||||
SET @app_parent_id = COALESCE(@app_parent_id, (SELECT MIN(id) FROM system_menu WHERE type = 1 AND path IN ('app', '/app') AND deleted = 0));
|
||||
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, status, visible, keep_alive, always_show, creator, updater, deleted)
|
||||
SELECT '应用管理', '', 1, 30, 0, 'app', 'ep:iphone', NULL, 0, b'1', b'1', b'1', '1', '1', b'0'
|
||||
WHERE @app_parent_id IS NULL;
|
||||
SET @app_parent_id = COALESCE(@app_parent_id, (SELECT MIN(id) FROM system_menu WHERE type = 1 AND path IN ('app','/app') AND deleted = 0));
|
||||
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, updater, deleted)
|
||||
SELECT '版本管理', 'app:version:query', 2, 10, @app_parent_id, 'version', 'ep:upload-filled', 'app/version/index', 'AppVersion', 0, b'1', b'1', b'1', '1', '1', b'0'
|
||||
WHERE @app_version_menu_id IS NULL;
|
||||
SET @app_version_menu_id = (SELECT MIN(id) FROM system_menu WHERE component = 'app/version/index' AND deleted = 0);
|
||||
UPDATE system_menu SET permission = 'app:version:query', component_name = 'AppVersion', update_time = CURRENT_TIMESTAMP
|
||||
WHERE id = @app_version_menu_id;
|
||||
|
||||
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, status, visible, keep_alive, always_show, creator, updater, deleted)
|
||||
SELECT buttons.name, buttons.permission, 3, buttons.sort, @app_version_menu_id, '', 0, b'1', b'1', b'1', '1', '1', b'0'
|
||||
FROM (
|
||||
SELECT '版本查询' name, 'app:version:query' permission, 1 sort
|
||||
UNION ALL SELECT '版本新增', 'app:version:create', 2
|
||||
UNION ALL SELECT '版本编辑', 'app:version:update', 3
|
||||
UNION ALL SELECT '版本删除', 'app:version:delete', 4
|
||||
UNION ALL SELECT '版本发布与下架', 'app:version:publish', 5
|
||||
) buttons
|
||||
WHERE NOT EXISTS (SELECT 1 FROM system_menu current_menu WHERE current_menu.parent_id = @app_version_menu_id AND current_menu.permission = buttons.permission AND current_menu.deleted = 0);
|
||||
@@ -0,0 +1,78 @@
|
||||
-- WGT 同一发布记录支持多平台。适用于已执行版本管理建表脚本的 MySQL 5.7/8.0。
|
||||
-- 选择目标业务库并备份后执行,可重复运行。业务字段原单平台值无需改写。
|
||||
-- 平台字段保存规范 CSV,三个生成有效标记分别约束平台重叠,逻辑删除历史不参与唯一性。
|
||||
-- 如既有数据已经存在同版本、重叠平台的记录,索引创建会报告冲突,处理对应记录后可重跑。
|
||||
|
||||
SET @app_platform_sql = IF(
|
||||
(SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'member_app_version_package' AND COLUMN_NAME = 'platform') < 64,
|
||||
'ALTER TABLE `member_app_version_package` MODIFY COLUMN `platform` varchar(64) NOT NULL COMMENT ''规范CSV目标平台,android/ios/harmony''',
|
||||
'SELECT ''member_app_version_package.platform already supports multiple targets'' AS migration_step'
|
||||
);
|
||||
PREPARE app_platform_stmt FROM @app_platform_sql;
|
||||
EXECUTE app_platform_stmt;
|
||||
DEALLOCATE PREPARE app_platform_stmt;
|
||||
|
||||
SET @app_platform_sql = IF(
|
||||
(SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'member_app_version' AND COLUMN_NAME = 'platform') < 64,
|
||||
'ALTER TABLE `member_app_version` MODIFY COLUMN `platform` varchar(64) NOT NULL COMMENT ''规范CSV目标平台,android/ios/harmony''',
|
||||
'SELECT ''member_app_version.platform already supports multiple targets'' AS migration_step'
|
||||
);
|
||||
PREPARE app_platform_stmt FROM @app_platform_sql;
|
||||
EXECUTE app_platform_stmt;
|
||||
DEALLOCATE PREPARE app_platform_stmt;
|
||||
|
||||
SET @app_platform_sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'member_app_version' AND COLUMN_NAME = 'android_active_flag') = 0,
|
||||
'ALTER TABLE `member_app_version` ADD COLUMN `android_active_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 AND LOCATE('',android,'', CONCAT('','', `platform`, '','')) > 0 THEN 1 ELSE NULL END) STORED COMMENT ''android有效目标唯一标记''',
|
||||
'SELECT ''android_active_flag already exists'' AS migration_step'
|
||||
);
|
||||
PREPARE app_platform_stmt FROM @app_platform_sql;
|
||||
EXECUTE app_platform_stmt;
|
||||
DEALLOCATE PREPARE app_platform_stmt;
|
||||
|
||||
SET @app_platform_sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'member_app_version' AND INDEX_NAME = 'uk_app_version_android_active') = 0,
|
||||
'ALTER TABLE `member_app_version` ADD UNIQUE KEY `uk_app_version_android_active` (`tenant_id`,`app_id`,`package_type`,`version_code`,`android_active_flag`)',
|
||||
'SELECT ''uk_app_version_android_active already exists'' AS migration_step'
|
||||
);
|
||||
PREPARE app_platform_stmt FROM @app_platform_sql;
|
||||
EXECUTE app_platform_stmt;
|
||||
DEALLOCATE PREPARE app_platform_stmt;
|
||||
|
||||
SET @app_platform_sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'member_app_version' AND COLUMN_NAME = 'ios_active_flag') = 0,
|
||||
'ALTER TABLE `member_app_version` ADD COLUMN `ios_active_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 AND LOCATE('',ios,'', CONCAT('','', `platform`, '','')) > 0 THEN 1 ELSE NULL END) STORED COMMENT ''ios有效目标唯一标记''',
|
||||
'SELECT ''ios_active_flag already exists'' AS migration_step'
|
||||
);
|
||||
PREPARE app_platform_stmt FROM @app_platform_sql;
|
||||
EXECUTE app_platform_stmt;
|
||||
DEALLOCATE PREPARE app_platform_stmt;
|
||||
|
||||
SET @app_platform_sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'member_app_version' AND INDEX_NAME = 'uk_app_version_ios_active') = 0,
|
||||
'ALTER TABLE `member_app_version` ADD UNIQUE KEY `uk_app_version_ios_active` (`tenant_id`,`app_id`,`package_type`,`version_code`,`ios_active_flag`)',
|
||||
'SELECT ''uk_app_version_ios_active already exists'' AS migration_step'
|
||||
);
|
||||
PREPARE app_platform_stmt FROM @app_platform_sql;
|
||||
EXECUTE app_platform_stmt;
|
||||
DEALLOCATE PREPARE app_platform_stmt;
|
||||
|
||||
SET @app_platform_sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'member_app_version' AND COLUMN_NAME = 'harmony_active_flag') = 0,
|
||||
'ALTER TABLE `member_app_version` ADD COLUMN `harmony_active_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 AND LOCATE('',harmony,'', CONCAT('','', `platform`, '','')) > 0 THEN 1 ELSE NULL END) STORED COMMENT ''harmony有效目标唯一标记''',
|
||||
'SELECT ''harmony_active_flag already exists'' AS migration_step'
|
||||
);
|
||||
PREPARE app_platform_stmt FROM @app_platform_sql;
|
||||
EXECUTE app_platform_stmt;
|
||||
DEALLOCATE PREPARE app_platform_stmt;
|
||||
|
||||
SET @app_platform_sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'member_app_version' AND INDEX_NAME = 'uk_app_version_harmony_active') = 0,
|
||||
'ALTER TABLE `member_app_version` ADD UNIQUE KEY `uk_app_version_harmony_active` (`tenant_id`,`app_id`,`package_type`,`version_code`,`harmony_active_flag`)',
|
||||
'SELECT ''uk_app_version_harmony_active already exists'' AS migration_step'
|
||||
);
|
||||
PREPARE app_platform_stmt FROM @app_platform_sql;
|
||||
EXECUTE app_platform_stmt;
|
||||
DEALLOCATE PREPARE app_platform_stmt;
|
||||
|
||||
SHOW INDEX FROM `member_app_version` WHERE Key_name IN ('uk_app_version_android_active', 'uk_app_version_ios_active', 'uk_app_version_harmony_active');
|
||||
@@ -0,0 +1,44 @@
|
||||
# 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 打包及设备行为需要专项验证。
|
||||
Reference in new issue
Block a user