Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
5.7 KiB
B-225 双端验收包无法联网
分支:agent/agent/a4ad7eed(基于问题基线 18d890ae7fdf66fa4df67360469f0f143641666a)
施工依据:B-148 第13阶段返工;对照旧包 v1.0.6-internal-test、故障预发布 v3.8.3-internal-acceptance、本卡新源码与新产物。
本卡只修客户端/构建配置并重打候选包,不改现网服务、不覆盖 Gitea 预发布 tag、不把构建成功当成真机联网通过。
结论:Windows 根因是 Vite 未注入 VITE_*,登录打到 undefined;Android 根因是默认 host 为官方占位域名,且回退端口 10008/10009 已关闭。候选包产物级已写入公司内网地址。真机登录未测。
根因(产物对照,不是猜)
公司内网现况(构建机只读探测 192.168.200.11):10001 / 10002 / 10010 / 17880 开;官方 chat 默认口 10008 / 10009 关。账号服务 POST /api/login 有业务响应。
| 对照项 | 旧可用包 v1.0.6-internal-test |
故障预发布 v3.8.3-internal-acceptance |
本卡源码 + 候选包 |
|---|---|---|---|
| Windows 登录 | asar 字面量 http://192.168.200.11:10010/api/login |
asar 为 `${{}.VITE_ACCOUNT_URL}/api/login`(Vite 空对象) |
asar 字面量 http://192.168.200.11:10010 等四条地址 |
| Windows IM / LiveKit | :10002 / :10001 / :17880 字面量 |
同样未注入 | 同上,四条均字面量 |
Android libapp.so |
仅公司地址 | 公司地址 + your-server-ip or your-domain + :10008 |
公司四条地址;your-server-ip / :10008 / :10009 为 0 |
Windows 直接原因:仓库根 .gitignore 忽略 .env,B-213 打包时没有 .env / .env.production,vite build 把 import.meta.env.VITE_* 编成空对象属性。
Android 直接原因:Config._host 不是 IP,启动默认走 HTTPS 假域名;HttpUtil.init() 在 CompanyBootstrap 之前拍死 dio.baseUrl;ApiService.setBaseUrl 曾只写 host 不带 http:// 和端口;Urls 的 static final 第一次读取会冻结错误 URL;官方 chat 口已关,公司账号口是 10010。
最小修复
| 端 | 改动 | 作用 |
|---|---|---|
| PC | 新增 pc-client/.env.production(可入库) |
vite build 默认 production 能注入内网地址 |
| PC | 新增 pc-client/src/config/endpoints.ts,登录/目录/RTC/IM 改走兜底常量 |
即使漏加载 env,也不会变成 undefined |
| Android | Config._host = 192.168.200.11;auth/chatToken 回退 10008/10009 → 10010 |
默认不再走假域名和已关闭端口 |
| Android | HttpUtil.setBaseUrl;bootstrap 写入完整 AppEndpoints.apiAddr |
启动后 Dio / ApiService 指向 http://192.168.200.11:10002 |
| Android | Urls 改为 getter |
DataSp 写入后 URL 会跟着更新 |
未改:account-service/、docker、端口、现网数据、mobile/ 旧工程。
提交与回退
从新到旧回退:先本验收记录,再联网修复。
| 主题 | SHA | 文件 |
|---|---|---|
| 本验收记录 | 本文件当次提交 | docs/acceptance/b225-network-fix.md |
| 联网修复 | bbc4dce0b61b44447f84732d841b8a66e3a2f4be |
pc-client/.env.production、pc-client/src/config/endpoints.ts、PC 调用点、Android Config/Urls/HttpUtil/bootstrap |
回退示例(新到旧):
git revert <本验收提交>
git revert bbc4dce0b61b44447f84732d841b8a66e3a2f4be
用户侧继续用旧包 v1.0.6-internal-test。不要回退到故障预发布 v3.8.3-internal-acceptance。
代码侧也可把分支重置回 18d890ae7fdf66fa4df67360469f0f143641666a。回退不影响现网服务与已发布旧包。
环境
- Flutter 3.24.5 / Dart 3.5.4(
C:\devtools\flutter_3.24.5) - Temurin JDK 17.0.20
- Android SDK:platform-tools、platforms;android-34、build-tools;34.0.0
- Node v24.5.0;
pc-clientnpm install --ignore-scripts后npm run build+npx electron-builder --win --x64 GRADLE_OPTS=-Xmx4096M
候选包(未发布,未覆盖 v3.8.3-internal-acceptance)
构建基线 HEAD:18d890ae7fdf66fa4df67360469f0f143641666a + 本卡两提交。
| 产物 | 版本 | 大小 | SHA256 | 路径 |
|---|---|---|---|---|
| Android release APK | 3.8.3 | 53,288,459 B | 3709E9B24F2F8B12B9BD931D6633DC101C186367B5C3E704DD91D67DCB791B86 |
mobile-next/build/app/outputs/flutter-apk/app-release.apk |
| Windows NSIS EXE | 1.0.2 | 105,893,401 B | F16B421857C341016E4375A869C53FF80B1028E49F84A59FE43C93D50FCC866C |
pc-client/release/Base/1.0.2/畅联_1.0.2.exe |
故障预发布对照(不要当候选):
| 产物 | SHA256 |
|---|---|
APK v3.8.3-internal-acceptance |
41261A1BEBD00597D16B50A0D01A261AF592129C5F28014B423A1AAE07AE7C73 |
EXE v3.8.3-internal-acceptance |
25491BA9A19E181144602F81991993DBF3350A3981BD1CC82354949A83B0E645 |
产物抽检:
- 新 EXE
app.asar:http://192.168.200.11:10010/:10002/ws://...:10001/:17880各 1 次;VITE_ACCOUNT_URL、{}.VITE_、undefined/api/login为 0。 - 新 APK
lib/arm64-v8a/libapp.so:上述四条公司地址各 1 次;your-server-ip、:10008、:10009为 0。
APK 内嵌时间戳,哈希不可位级复现。构建期告警同前:Flutter Gradle apply-script 弃用;部分依赖 Kotlin metadata 1.8.0 vs 工程预期 1.6.0。均属上游,release 通过。
已测 / 未测
已测:
- 构建机到
192.168.200.11的 10001/10002/10010/17880 端口开,10008/10009 关 - 账号服务对错误工号返回业务 JSON(服务本身在)
npm run build、electron-builder --win --x64、flutter build apk --release成功- 新旧产物字符串对照如上
未测(不得写成已通过):
- 公司内网真机 / 真 PC 用工号登录
- 登录后会话列表、发消息、音视频
- 本候选包安装覆盖旧包后的升级路径