Files
tongxunruanjian/docs/upstream/build-and-rollback.md
T

66 lines
3.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 构建与回退方法(docs/upstream
## 前置环境
```bat
set JAVA_HOME=<JDK17 目录>
set ANDROID_HOME=<Android SDK 目录>
set PATH=%JAVA_HOME%\bin;<Flutter SDK 目录>\bin;%PATH%
set GRADLE_OPTS=-Xmx4096M
```
`mobile-next/android/local.properties` 需包含(本机路径,不入库):
```
sdk.dir=<Android SDK 目录,反斜杠转义>
flutter.sdk=<Flutter SDK 目录,反斜杠转义>
```
首次依赖解析(生成 `.dart_tool`,不产生源码改动):
```
cd mobile-next
flutter pub get
```
## 构建命令
```bat
flutter build apk --debug :: 产物 build/app/outputs/flutter-apk/app-debug.apk
flutter build apk --release :: 产物 build/app/outputs/flutter-apk/app-release.apk
```
- release 使用上游自带 keystore `android/app/openim`alias/password 均为 `openim`),保留 OpenIM 标识与签名。
- 注意:上游 `android/app/build.gradle``ndk { abiFilters "arm64-v8a" }` 只打 arm64;如需 x86_64 模拟器联调,临时放开 `"x86_64"` 再还原(本地产物,不入库)。
## 本卡实测结果(2026-08-19,本机锁定环境)
| 构建 | 结果 | 产物 | 大小 | SHA256 |
|---|---|---|---|---|
| debug | 成功 | `app-debug.apk` | 109,454,925 B | `DD7D9700BC1F5830B7495875387948AAD536CA63FDC3EF66B4C0F4D152407B72` |
| release | 成功 | `app-release.apk` | 53,323,411 B | `4969AF4A4800A8E7C0B0C2F50687CB8C765925E4F2B3B7A53762D1D9E49CA604` |
> SHA256 与字节大小仅为**当次构建产物记录**,不是位级可复现承诺。APK 内嵌构建时间戳,换机/换次重跑时哈希必然不同;大小差通常在时间戳/元数据量级。可复现的是工具链、构建命令与包名/签名证书。B-149 复核重跑:debug 109,454,749 B(差 176 B)、release 53,323,375 B(差 36 B),签名证书 SHA-256 与上表一致。
APK 元数据(aapt badging):package `io.openim.flutter.demo`versionCode `180`versionName `3.8.3`minSdk 24 / targetSdk 33 / compileSdk 34。
release 签名(apksigner verify --print-certs):CN=openim,证书 SHA-256 `1f38a82fb3c33be7951fb5d964ef5bd9c6c9bfc084ae1e2a8a40a0d1f44ae1fe`,与官方基线同一 keystore。
构建期告警(不影响产物):Flutter Gradle 插件 apply-script 弃用提示;部分依赖 Kotlin metadata 版本(1.8.x)高于工程 Kotlin1.9.23 预期 1.6.0/1.8.0)的警告,均属上游依赖组合特性,debug/release 均通过。
## 失败停止点
任一核心门禁失败即停止后续迁移,在本卡汇报并附错误证据,不得继续迁移。本阶段 debug/release 均构建成功,无失败步骤。
## 逐提交回退
本卡分支基于回退基线 `fa8584a`,主题提交相互独立,可单独回退:
| 主题 | 提交 | 回退命令 |
|---|---|---|
| 官方基线导入 + 双构建 | 8046ec7483d68f67011913da12e5e671479b5ff0 | `git revert 8046ec7483d68f67011913da12e5e671479b5ff0``git rm -r mobile-next` |
| SDK hotfix.12 接入 + 核心能力实测 | 2c9dab160eefcaa5a4ad76a24ec2948bffaccc7e | `git revert 2c9dab160eefcaa5a4ad76a24ec2948bffaccc7e` |
`2c9dab1` 实际包含 **5 个文件**`mobile-next/pubspec.yaml``openim_common/pubspec.yaml``openim_live/pubspec.yaml``mobile-next/pubspec.lock`,以及实测记录文档 `docs/mobile-next-hotfix-sdk-verification.md``git revert` 会一并撤掉该文档,不只是 4 个依赖文件。
回退任一提交均不影响 `mobile/``pc-client/``account-service/`、现网服务器与已发布安装包。SDK hotfix 提交的手动回退:把上述 3 个 `pubspec.yaml``flutter_openim_sdk` 改回 `3.8.3+3``flutter pub get`(锁文件随之回写;实测记录文档需另行保留或删除)。