Files
tongxunruanjian/docs/acceptance/b225-network-fix.md
T
2026-08-20 16:21:58 +08:00

5.7 KiB
Raw Blame History

B-225 双端验收包无法联网

分支:agent/agent/a4ad7eed(基于问题基线 18d890ae7fdf66fa4df67360469f0f143641666a) 施工依据:B-148 第13阶段返工;对照旧包 v1.0.6-internal-test、故障预发布 v3.8.3-internal-acceptance、本卡新源码与新产物。 本卡只修客户端/构建配置并重打候选包,不改现网服务、不覆盖 Gitea 预发布 tag、不把构建成功当成真机联网通过。

结论:Windows 根因是 Vite 未注入 VITE_*,登录打到 undefinedAndroid 根因是默认 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 忽略 .envB-213 打包时没有 .env / .env.productionvite buildimport.meta.env.VITE_* 编成空对象属性。

Android 直接原因:Config._host 不是 IP,启动默认走 HTTPS 假域名;HttpUtil.init()CompanyBootstrap 之前拍死 dio.baseUrlApiService.setBaseUrl 曾只写 host 不带 http:// 和端口;Urlsstatic 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.11auth/chatToken 回退 10008/10009 → 10010 默认不再走假域名和已关闭端口
Android HttpUtil.setBaseUrlbootstrap 写入完整 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.productionpc-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.4C:\devtools\flutter_3.24.5
  • Temurin JDK 17.0.20
  • Android SDKplatform-tools、platforms;android-34、build-tools;34.0.0
  • Node v24.5.0pc-client npm install --ignore-scriptsnpm run build + npx electron-builder --win --x64
  • GRADLE_OPTS=-Xmx4096M

候选包(未发布,未覆盖 v3.8.3-internal-acceptance

构建基线 HEAD18d890ae7fdf66fa4df67360469f0f143641666a + 本卡两提交。

产物 版本 大小 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.asarhttp://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 buildelectron-builder --win --x64flutter build apk --release 成功
  • 新旧产物字符串对照如上

未测(不得写成已通过):

  • 公司内网真机 / 真 PC 用工号登录
  • 登录后会话列表、发消息、音视频
  • 本候选包安装覆盖旧包后的升级路径