feat(mobile-next): 导入官方 openim-flutter-demo 固定基线 3.8.3-patch.3 并完成双构建

- 上游: github.com/OpenIMSDK/openim-flutter-demo tag 3.8.3-patch.3
  commit b3dfdb1e8aaeaaf6f0793e10cadd20d5c184a31f
- 并行目录 mobile-next/ 原样导入(含 LICENSE),不覆盖现网 mobile/
- 锁定 Flutter 3.24.5 / Dart 3.5.4 / JDK 17 / Gradle 7.6.3 / AGP 7.3.1
- 实测 Android debug 与 release 构建均成功(见 docs/mobile-next-baseline-import.md)
- 本提交可单独回退:git revert 1db1229(重写前)

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
编码工程师
2026-08-19 15:24:33 +08:00
co-authored by multica-agent
parent fa8584a73f
commit 8046ec7483
767 changed files with 57658 additions and 0 deletions
+115
View File
@@ -0,0 +1,115 @@
# 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 stablerevision `dec2ee5c1f`engine `a18df97ca5` |
| Dart | 3.5.4(随 Flutter 3.24.5 分发) |
| JDK | OpenJDK 17.0.20+8Temurin |
| 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 34minSdk 24targetSdk 33build-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)高于工程 Kotlin1.9.23 预期 1.6.0/1.8.0)的警告,属于上游依赖组合特性,debug/release 均通过。
## 失败证据
本阶段 debug 与 release 均构建成功,无失败步骤。若后续步骤出现构建失败,按完成标准须明确到具体依赖或构建步骤并留存日志,不再继续后续兼容迁移。
## 回退方法
本任务为独立提交,仅新增 `mobile-next/` 与本文档,未触碰 `mobile/``pc-client/``account-service/` 及现网服务。
回退命令:
```
git revert cbfced2
```
或直接删除并行目录(不影响现网):
```
git rm -r mobile-next
```
## 备注
- 本目录仅证明「官方固定基线可稳定构建」,不含任何公司定制逻辑,尚未接入公司账号/品牌,属后续阶段工作。