docs: 记录 B-197/B-198 跨端构建修复与验收
补记 Dart/Gradle/锁文件提交 SHA、debug/release 与 PC 重构建命令、产物 SHA256、启动冒烟、未测项与回退。不宣布运行回归通过。 Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai> Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
multica-agent
parent
c150033b39
commit
2a817e77d8
@@ -0,0 +1,150 @@
|
||||
# B-197 / B-198 跨端构建修复与验收记录
|
||||
|
||||
分支:`agent/agent/7b089146`(本卡工作树 `agent/agent/2cae90a2`)
|
||||
构建基线 HEAD:`2c81a11e03411fa1b033f0f74cd49139e258d1d3`
|
||||
越界对比基线:`e26abad`
|
||||
本卡只做构建修复与验收记录,不部署、不发布、不换标。
|
||||
|
||||
B-197 已真实打通 PC 与 Android debug/release,但修复仅在部署工程师本机工作树。本文件记录 B-198 复核后的入库提交与**重新真实构建**结果。
|
||||
|
||||
**结论:安装包构建与 PC 启动冒烟通过。登录、收发、语音、同步等运行时回归未测,不得视为跨端运行验收通过。**
|
||||
|
||||
## 提交主题(可逐项 `git revert`)
|
||||
|
||||
从新到旧回退:先本验收记录,再锁文件,再 Gradle 堆,再 Dart 编译修复。
|
||||
|
||||
| 主题 | SHA | 文件 |
|
||||
|---|---|---|
|
||||
| 本验收记录 | 本文件当次提交 | `docs/acceptance/b197-cross-platform-regression.md` |
|
||||
| 同步 package-lock 根版本号 1.0.2 | `c150033b39d047852eb1baed1d55b1726a24e65a` | `pc-client/package-lock.json` |
|
||||
| Android Gradle 堆 4096M | `5160c8ec87f794f75a2ab2e06632a88c35f2d2e1` | `mobile-next/android/gradle.properties` |
|
||||
| FeatureFlags 导入 + 去掉预览 const | `1767cf2547ca58102ba3734c06ae73ce85e646a2` | `personal_info_view.dart`、`chat_picture_preview.dart` |
|
||||
|
||||
回退示例(新到旧):
|
||||
|
||||
```
|
||||
git revert <本验收提交>
|
||||
git revert c150033b39d047852eb1baed1d55b1726a24e65a
|
||||
git revert 5160c8ec87f794f75a2ab2e06632a88c35f2d2e1
|
||||
git revert 1767cf2547ca58102ba3734c06ae73ce85e646a2
|
||||
```
|
||||
|
||||
回退不影响 `mobile/`、`account-service/`、`config/`、`scripts/`、现网服务与已发布安装包。
|
||||
|
||||
## 复核的 4 处改动
|
||||
|
||||
1. `mobile-next/lib/pages/contacts/user_profile_panel/personal_info/personal_info_view.dart:6`:`../../../company` → `../../../../company`。该文件在 `personal_info/` 下,相对 `lib/` 需要四层。目标模块是 `lib/company/feature_flags.dart` 的 `FeatureFlags`,未引入其它模块。
|
||||
2. `mobile-next/openim_common/lib/src/widgets/chat/chat_picture_preview.dart:97`:去掉 `Center` 外层 `const`。`Styles.c_0089FF` 定义为 `static Color`(非 const)。未改 SizedBox / CircularProgressIndicator,未做额外格式化。
|
||||
3. `mobile-next/android/gradle.properties`:`org.gradle.jvmargs=-Xmx1536M` → `-Xmx4096M`。B-197 在 1536M 上 release 报 `Java heap space`;本卡用 4096M 重新打通 debug 与 release。未再试 2048M/3072M(缺少真实 release 证明),故采用已证明稳定的 4096M。
|
||||
4. `pc-client/package-lock.json`:仅根节点 `"version": "1.0.1"` → `"1.0.2"`,与 `package.json` 的 1.0.2 对齐。`lockfileVersion` 仍为 3,无依赖树或包升级。其它 npm 回写视为环境噪音,未入库。
|
||||
|
||||
## Gradle 机器内存要求
|
||||
|
||||
- 配置:`mobile-next/android/gradle.properties` 中 `org.gradle.jvmargs=-Xmx4096M`(与 `docs/upstream/build-and-rollback.md` 的 `GRADLE_OPTS=-Xmx4096M` 一致)。
|
||||
- 机器:JVM 堆预留 4GB。建议物理内存 ≥ 8GB(堆 + Gradle daemon + 系统);本机构建机约 64GB,构建时未再出现 heap space。
|
||||
- 1536M 不能作为 release 稳定值。
|
||||
|
||||
## 环境
|
||||
|
||||
- Flutter 3.24.5 / Dart 3.5.4(`C:\flutter324`)
|
||||
- Temurin JDK 17.0.20
|
||||
- Android SDK:既有 B-95 工具链(build-tools 36.0.0,platforms 含 compileSdk 34)
|
||||
- Node v24.18.0 / npm 11.16.0(`C:\Program Files\nodejs`)
|
||||
- `npm install` 的 `husky install || true` 在 Windows cmd 下仍以 exit 1 结束(已知非阻塞);`node_modules` 可用,后续 vite / electron-builder 成功。
|
||||
|
||||
## 检查与构建
|
||||
|
||||
### Dart
|
||||
|
||||
- 对上述两文件做过 `dart format`,但**未提交格式化换行**,只保留两处语义改动。
|
||||
- 定点 `flutter analyze`:`personal_info_view.dart` 0 issues;`chat_picture_preview.dart` 无 `invalid_constant`,仅存量 `must_be_immutable` / `use_super_parameters`。
|
||||
- 全量 `flutter analyze`(mobile-next):**553 issues**(约 18 error / 87 warning / 448 info)。error 全为存量:`local_plugin/flutter_download_manager/example`、`openim_common` 的 `push_controller.dart` / `custom_mk_controls.dart`。本卡两文件无新增 error。
|
||||
|
||||
### Android(必须重新真实构建)
|
||||
|
||||
命令(`mobile-next/`):
|
||||
|
||||
```
|
||||
flutter pub get
|
||||
flutter build apk --debug
|
||||
flutter build apk --release
|
||||
```
|
||||
|
||||
| 构建 | 结果 | 大小 | SHA256 | 产物 |
|
||||
|---|---|---|---|---|
|
||||
| debug | 成功 | 109,391,065 B | `CE01F30CAFBA24CAFD686F0CFB32ACBDB53359395341B0B1EA2FB795F14C0748` | `mobile-next/build/app/outputs/flutter-apk/app-debug.apk` |
|
||||
| release | 成功 | 53,273,539 B | `52F02CBC855989C62A89112EB791510CC4313921D9E1998456E94A737F8B148B` | `mobile-next/build/app/outputs/flutter-apk/app-release.apk` |
|
||||
|
||||
元数据(aapt / apksigner,release):包名 `io.openim.flutter.demo`,versionName `3.8.3` / versionCode `180`,minSdk 24 / targetSdk 33 / compileSdk 34,仅 `arm64-v8a`,label `F-DEMO`。签名 CN=openim,证书 SHA-256 `1f38a82fb3c33be7951fb5d964ef5bd9c6c9bfc084ae1e2a8a40a0d1f44ae1fe`。
|
||||
|
||||
构建期告警:Flutter Gradle apply-script 弃用;部分依赖 Kotlin metadata 1.8.0 vs 工程预期 1.6.0。均属上游,debug/release 均通过。
|
||||
|
||||
### PC(锁文件影响后的 build + 安装包)
|
||||
|
||||
```
|
||||
npm install
|
||||
npm run build
|
||||
npx tsc --noEmit
|
||||
npx electron-builder --win --x64
|
||||
```
|
||||
|
||||
| 步骤 | 结果 |
|
||||
|---|---|
|
||||
| npm install | 依赖装上;husky prepare 在 Windows 报 exit 1(非阻塞) |
|
||||
| vite build | 通过(`✓ built in 25.77s`),antd `"use client"` 指令被忽略(存量告警) |
|
||||
| tsc --noEmit | exit 2,**24 个存量错误**,与 B-188 清单一致,本卡未新增 |
|
||||
| electron-builder | 通过;`extraResources` 目录缺失,构建跳过该项 |
|
||||
|
||||
产物:`pc-client/release/Base/1.0.2/畅联_1.0.2.exe`,105,891,730 B(约 101MB),SHA256 `A5F15035D669E2184BA1ED2E68FFFB1432FB997703F1FC8103CE4B38D7BB362E`。
|
||||
|
||||
启动冒烟:启动 `win-unpacked/畅联.exe`,进程拉起且主窗口标题为「畅联」,随后结束进程。未登录。
|
||||
|
||||
`tsc` 存量错误(未修):`useGroupMembers.ts` TS18047 ×3、`About.tsx` TS2345 ×2、`useHistoryMessageList.tsx` TS18047 ×1、`ChooseBox/index.tsx` TS18047 ×2、`RtcCallModal` / `RtcControl` / `RtcLayout` TS2786 ×4、`UserCardModal` TS2345 ×1、`imCommon.ts` TS2322 ×11。
|
||||
|
||||
## 与 B-197 报告 SHA256 的差异
|
||||
|
||||
B-197 评论记录:
|
||||
|
||||
- PC `eab9bef6285c940351cdd995d850a0d4c67aebc122b83a0ba0680ea0f76e3df2`
|
||||
- Android release `b5029f0ece55cd11828a1fe4cb9364e660baad04495a74fe94f33639be8165c8`
|
||||
- Android debug `035d5b6eba7b20351269d88339ad5e0cd2d1179ac7d8fdae8e18a0069fc6b6b7`
|
||||
|
||||
本卡重跑后哈希均不同。APK / Electron 安装包内嵌构建时间戳,**不是位级可复现**;可复现的是工具链、命令、包名、签名证书与约 50.8MB / 101MB 量级。以本表 SHA256 为准。
|
||||
|
||||
## 越界比对
|
||||
|
||||
相对 `2c81a11e`:仅上述 4 个提交涉及的文件。
|
||||
|
||||
相对 `e26abad`:
|
||||
|
||||
- `mobile/`、`account-service/`、`config/`、`scripts/`:**零改动**
|
||||
- `pc-client/src/store/`、`pc-client/src/layout/MainContentWrap.tsx`、`pc-client/src/pages/chat/queryChat/ChatFooter/useSendMessage.ts`、`pc-client/src/pages/chat/queryChat/useHistoryMessageList.tsx`:**零改动**
|
||||
- `pc-client/electron/`:仅既有 `windowManage.ts` 的 `minWidth=1080`、`minHeight=680`(B-171 特批),本卡未再改
|
||||
|
||||
## 未测(缺外部条件,禁止写成通过)
|
||||
|
||||
- 测试账号:无有效工号+密码,未登录
|
||||
- Android ARM64 真机:产物仅 arm64-v8a,未安装、未点验
|
||||
- 工号登录 / 会话同步 / 好友群组 / 文字图片文件语音 / 断线重连 / 录音取消 / 50–60 秒时限 / 未听红点 / 安卓语音通话
|
||||
- PC 人工交互:置顶、删除、断网恢复、1080×680 稳定性、双向收发
|
||||
|
||||
最小所需:管理员给测试工号;真机装 `app-release.apk`;PC 装 `畅联_1.0.2.exe`;两工号同时登录做一轮双向收发。
|
||||
|
||||
## 安装与回退(本机产物,未入库)
|
||||
|
||||
安装:
|
||||
|
||||
- Android:把 `app-release.apk` 拷到 ARM64 真机安装(包名 `io.openim.flutter.demo`,会覆盖同包名旧包)。
|
||||
- PC:运行 `畅联_1.0.2.exe`。
|
||||
|
||||
回退代码:按上文 `git revert` 顺序。回退安装包:卸载本包 / 装回旧版安装包。现网服务与旧 `mobile/` 不受影响。
|
||||
|
||||
## 风险清单
|
||||
|
||||
- OpenIM 许可书面结论未落;未换标,label 仍 `F-DEMO`
|
||||
- APK 仍用上游 openim keystore;正式试用前需换正式签名
|
||||
- PC `extraResources` 目录缺失(构建跳过)
|
||||
- Electron 22 偏旧;内网地址写死 `192.168.200.11`
|
||||
- 全量 analyze / tsc 存量错误仍在,不作为本卡回归通过依据
|
||||
|
||||
功能质检与视觉审核须另排。本卡不宣布跨端运行验收通过。
|
||||
Reference in New Issue
Block a user