- docs/upstream/baseline.md: 上游来源/固定版本/许可证原文位置/工具链锁定/差异 - docs/upstream/build-and-rollback.md: 构建命令、本机实测 SHA256、逐提交回退方法 - docs/acceptance/sdk-compat-gate.md: hotfix.12 兼容冒烟矩阵(初始化/登录/会话同步/断线重连/好友/群组/文字双向/图片/文件/语音) - docs/acceptance/pc-boundary.md: PC 端只读核对的可改边界封存 - docs/acceptance/visual-spec-token-entry.md: 视觉规范 v2 唯一来源与 Token 入口预留 - 修正导入/验证文档中回退引用为 B-95 分支实际提交 Co-authored-by: multica-agent <github@multica.ai>
4.7 KiB
4.7 KiB
mobile-next 固定基线导入与构建记录(B-128 第1阶段)
上游来源
- 项目:OpenIM 官方 Flutter 样板工程
openim-flutter-demo - 仓库:
https://github.com/OpenIMSDK/openim-flutter-demo.git - 固定基线:tag
3.8.3-patch.3,提交b3dfdb1e8aaeaaf6f0793e10cadd20d5c184a31f("Updated IM SDK",2025-03-07) - 校验:
git ls-remote --tags解析该 tag 的^{}即指向b3dfdb1e8aaeaaf6f0793e10cadd20d5c184a31f
导入方式
- 并行目录
mobile-next/,与现网mobile/并存,未覆盖、未改动mobile/。 - 以
git clone --no-checkout拉取上游后git checkout 3.8.3-patch.3,将整棵工作树复制入mobile-next/(剔除.git与.DS_Store)。 - 导入后与原 tag 树做
git diff --no-index比对,除.git/.DS_Store外零差异。 - 未迁入公司功能、未换品牌、未调整 SDK 版本,源码保持上游原样。
- 平台工程内生成的
android/local.properties(sdk.dir / flutter.sdk 指向本机)不入库(见.gitignore)。
许可证位置
- 上游仓库根目录
LICENSE(已随导入进入mobile-next/LICENSE)。 - 子包
openim_common/LICENSE、openim_live/LICENSE、local_plugin/flutter_openim_live_alert/LICENSE。 - 各 pub.dev 依赖许可证见各自包目录,依赖清单以
mobile-next/pubspec.yaml与mobile-next/pubspec.lock为准。
锁定工具链版本
| 组件 | 版本 |
|---|---|
| Flutter | 3.24.5 stable(revision dec2ee5c1f,engine a18df97ca5) |
| Dart | 3.5.4(随 Flutter 3.24.5 分发) |
| JDK | OpenJDK 17.0.20+8(Temurin) |
| Gradle | 7.6.3(android/gradle/wrapper/gradle-wrapper.properties 锁定) |
| AGP | 7.3.1(android/build.gradle buildscript 声明) |
| Kotlin | 1.9.23(android/build.gradle ext.kotlin_version) |
| Android SDK | compileSdk 34,minSdk 24,targetSdk 33,build-tools 36.0.0 |
| Dart 依赖锁 | mobile-next/pubspec.lock(上游自带,原样保留) |
| OpenIM SDK | flutter_openim_sdk 3.8.3+3(上游 pubspec 锁定) |
注意:pubspec.lock 为上游原样内容;执行 flutter pub get 后仅将 flutter_openim_sdk 由 lock 中记录的 3.8.3+2 对齐到 pubspec.yaml 声明的 3.8.3+3(上游 lock 与 pubspec 不一致,为官方产物)。
可复现构建命令
前置环境变量:
set JAVA_HOME=<JDK17 目录>
set ANDROID_HOME=<Android SDK 目录>
set PATH=%JAVA_HOME%\bin;<Flutter SDK>\bin;%PATH%
mobile-next/android/local.properties 需含:
sdk.dir=<Android SDK 目录,反斜杠转义>
flutter.sdk=<Flutter SDK 目录,反斜杠转义>
首次执行依赖解析(会写 .dart_tool,不产生源码改动):
flutter pub get
Debug 构建
flutter build apk --debug
产物:build/app/outputs/flutter-apk/app-debug.apk(约 110 MB)。
Release 构建
flutter build apk --release
产物:build/app/outputs/flutter-apk/app-release.apk(约 51.3 MB,签名使用上游自带 keystore android/app/openim,alias/password 均为 openim)。
构建结果(2026-08-19,本机实测)
| 构建 | 结果 | 产物 | 大小 | SHA256 |
|---|---|---|---|---|
| debug | 成功 | app-debug.apk |
109,930,873 B | 55789791CE8226573C0030A026E5C89C44AD6E154884F24F7329357FCA7E0464 |
| release | 成功 | app-release.apk |
53,742,479 B | 46D5900FC735FE0880994385691E62A00589040C4D9FCD4DFA69E003763E7780(sha1 7191307bc54624c7b3cfdf13ed2378a749b19ec2) |
APK 元数据(aapt badging):package io.openim.flutter.demo,versionName 3.8.3,versionCode 180,minSdk 24 / targetSdk 33 / compileSdk 34。
构建期警告(不影响产物)
- Flutter Gradle 插件以
apply script方式应用,报 "deprecated, will be removed in a future release"(上游工程原生写法,非本任务改动)。 - 部分依赖 Kotlin metadata 版本(1.8.x)高于工程 Kotlin(1.9.23 预期 1.6.0/1.8.0)的警告,属于上游依赖组合特性,debug/release 均通过。
失败证据
本阶段 debug 与 release 均构建成功,无失败步骤。若后续步骤出现构建失败,按完成标准须明确到具体依赖或构建步骤并留存日志,不再继续后续兼容迁移。
回退方法
本任务为独立提交,仅新增 mobile-next/ 与本文档,未触碰 mobile/、pc-client/、account-service/ 及现网服务。
回退命令:
git revert 8046ec7483d68f67011913da12e5e671479b5ff0
或直接删除并行目录(不影响现网):
git rm -r mobile-next
备注
- 本目录仅证明「官方固定基线可稳定构建」,不含任何公司定制逻辑,尚未接入公司账号/品牌,属后续阶段工作。