Files
tongxunruanjian/docs/mobile-next-baseline-import.md
T
编码工程师andmultica-agent 8046ec7483 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>
2026-08-19 15:24:33 +08:00

116 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```
## 备注
- 本目录仅证明「官方固定基线可稳定构建」,不含任何公司定制逻辑,尚未接入公司账号/品牌,属后续阶段工作。