- 上游: 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>
116 lines
4.6 KiB
Markdown
116 lines
4.6 KiB
Markdown
# 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 cbfced2
|
||
```
|
||
|
||
或直接删除并行目录(不影响现网):
|
||
|
||
```
|
||
git rm -r mobile-next
|
||
```
|
||
|
||
## 备注
|
||
|
||
- 本目录仅证明「官方固定基线可稳定构建」,不含任何公司定制逻辑,尚未接入公司账号/品牌,属后续阶段工作。
|