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

3.6 KiB
Raw Blame History

mobile-next 构建与回退方法(docs/upstream

前置环境

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

构建命令

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/openimalias/password 均为 openim),保留 OpenIM 标识与签名。
  • 注意:上游 android/app/build.gradlendk { 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.demoversionCode 180versionName 3.8.3minSdk 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,主题提交相互独立,可单独回退:

主题 提交 回退命令
官方基线导入 + 双构建 8046ec7483 git revert 8046ec7483d68f67011913da12e5e671479b5ff0git rm -r mobile-next
SDK hotfix.12 接入 + 核心能力实测 2c9dab160e git revert 2c9dab160eefcaa5a4ad76a24ec2948bffaccc7e

2c9dab1 实际包含 5 个文件mobile-next/pubspec.yamlopenim_common/pubspec.yamlopenim_live/pubspec.yamlmobile-next/pubspec.lock,以及实测记录文档 docs/mobile-next-hotfix-sdk-verification.mdgit revert 会一并撤掉该文档,不只是 4 个依赖文件。

回退任一提交均不影响 mobile/pc-client/account-service/、现网服务器与已发布安装包。SDK hotfix 提交的手动回退:把上述 3 个 pubspec.yamlflutter_openim_sdk 改回 3.8.3+3flutter pub get(锁文件随之回写;实测记录文档需另行保留或删除)。