Files
tongxunruanjian/docs/mobile-next-baseline-import.md
T
编码工程师andmultica-agent 754f161a3f 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 10:45:55 +08:00

4.6 KiB
Raw Blame History

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.propertiessdk.dir / flutter.sdk 指向本机)不入库(见 .gitignore)。

许可证位置

  • 上游仓库根目录 LICENSE(已随导入进入 mobile-next/LICENSE)。
  • 子包 openim_common/LICENSEopenim_live/LICENSElocal_plugin/flutter_openim_live_alert/LICENSE
  • 各 pub.dev 依赖许可证见各自包目录,依赖清单以 mobile-next/pubspec.yamlmobile-next/pubspec.lock 为准。

锁定工具链版本

组件 版本
Flutter 3.24.5 stablerevision dec2ee5c1fengine a18df97ca5
Dart 3.5.4(随 Flutter 3.24.5 分发)
JDK OpenJDK 17.0.20+8Temurin
Gradle 7.6.3android/gradle/wrapper/gradle-wrapper.properties 锁定)
AGP 7.3.1android/build.gradle buildscript 声明)
Kotlin 1.9.23android/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/openimalias/password 均为 openim)。

构建结果(2026-08-19,本机实测)

构建 结果 产物 大小 SHA256
debug 成功 app-debug.apk 109,930,873 B 55789791CE8226573C0030A026E5C89C44AD6E154884F24F7329357FCA7E0464
release 成功 app-release.apk 53,742,479 B 46D5900FC735FE0880994385691E62A00589040C4D9FCD4DFA69E003763E7780sha1 7191307bc54624c7b3cfdf13ed2378a749b19ec2

APK 元数据(aapt badging):package io.openim.flutter.demoversionName 3.8.3versionCode 180minSdk 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

备注

  • 本目录仅证明「官方固定基线可稳定构建」,不含任何公司定制逻辑,尚未接入公司账号/品牌,属后续阶段工作。