From 613d38dd06a745c46fdad04691832a5403ae415e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BC=96=E7=A0=81=E5=B7=A5=E7=A8=8B=E5=B8=88?= Date: Fri, 21 Aug 2026 10:04:59 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E8=AE=B0=E5=BD=95=20B-273=20Android=20?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=B8=85=E7=90=86=E4=B8=8E=E5=80=99?= =?UTF-8?q?=E9=80=89=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor Co-authored-by: multica-agent --- .../acceptance/b273-android-client-cleanup.md | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 docs/acceptance/b273-android-client-cleanup.md diff --git a/docs/acceptance/b273-android-client-cleanup.md b/docs/acceptance/b273-android-client-cleanup.md new file mode 100644 index 0000000..c034630 --- /dev/null +++ b/docs/acceptance/b273-android-client-cleanup.md @@ -0,0 +1,103 @@ +# B-273 Android 悬浮窗、语音文案与位置发送清理 + +分支:`agent/agent/3f3d8cc3`(基于 `agent/agent/2b5c0459` HEAD `092039b`) +施工依据:B-269 第七、八、十节;B-91 视觉规范 v2(本卡不做换肤)。 +本卡只改 `mobile-next/` 客户端,不发布、不改现网、不覆盖 Gitea Release。 + +**结论:三项清理已落地;Android release 真实构建通过。缺真机账号,首次安装权限弹窗、前后台语音、历史位置消息展示继续标为未测。** + +## 基线 + +- 开工 HEAD:`092039b` `fix(mobile-next): 收口我的信息只读字段显示` +- 远端 `origin/agent/agent/2b5c0459` 与开工提交一致,未覆盖他人变更 + +## 三项对照 + +| # | 目标 | 修改位置 | 结果 | +|---|---|---|---| +| 1 | 去掉悬浮窗 | `AndroidManifest.xml` 以 `tools:node="remove"` 剔除 `SYSTEM_ALERT_WINDOW`;删除 IM 同步后申请;删除旧 `CallService` 声明;来电不再走 overlay 分支 | 合并清单无悬浮窗权限、无 `CallService` | +| 2 | 通话入口改成语音 | `toolboxCall` / `audioAndVideoCall` →「语音通话」;资料页改麦克风图标;通话选择表只留语音;三个入口仍只发 `CallType.audio` | 相册「拍摄」和「视频」消息文案未改 | +| 3 | 去掉位置发送 | 工具箱/选点页/`sendLocation` 删除;去掉 `geolocator`;定位权限 `tools:node="remove"`;保留历史位置气泡与 `MapView`,解析失败回退「位置消息」+ 地址 | 合并清单无定位权限 | + +旧插件 `local_plugin/flutter_openim_live_alert` 未物理删除(B-269:可先停用、另卡再删),应用清单已不再声明其服务。 + +`REQUEST_IGNORE_BATTERY_OPTIMIZATIONS` 仍由 `flutter_background`(已接通通话前台服务)合并进来;客户端登录/同步不再申请。`CALL_PHONE` / `READ_PHONE_STATE` / `REQUEST_INSTALL_PACKAGES` 仍有拨号、WebRTC、升级外链用途,未动。 + +## 提交主题(可逐项 `git revert`) + +从新到旧回退:先本验收记录,再测试,再代码。 + +| 主题 | SHA | 文件 | +|---|---|---| +| 本验收记录 | 本文件当次提交 | `docs/acceptance/b273-android-client-cleanup.md` | +| 定向测试 | `1774e59` | `mobile-next/test/company/b273_client_cleanup_test.dart` | +| 三项清理代码 | `694891c` | 悬浮窗、语音文案、位置发送 | + +回退示例(新到旧): + +``` +git revert <本验收提交> +git revert 1774e59 +git revert 694891c +``` + +回退不影响 `mobile/`、`pc-client/`、`account-service/`、`config/`、`scripts/`、现网服务与已发布安装包。 + +## 环境 + +- Flutter 3.24.5 / Dart 3.5.4(`C:\flutter324`) +- Temurin JDK 17.0.20+8 +- Android SDK:既有 B-95 工具链(compileSdk 34) +- `org.gradle.jvmargs=-Xmx4096M` + +## 检查与构建 + +### 定点测试 + +``` +cd mobile-next +flutter test test/company/b273_client_cleanup_test.dart test/company/call_visual_rework_test.dart test/company/call_session_guard_test.dart test/company/rtc_token_mapper_test.dart test/company/user_full_info_mapper_test.dart +``` + +25 项通过:清理清单/文案/位置回退、通话视觉 Token、占线/去重/超时、换票映射、「我的信息」映射。 + +定点 `flutter analyze` 修改文件:**0 error**。存量 info/warning 未作为本卡阻塞。 + +### Android(真实构建) + +``` +cd mobile-next +flutter build apk --release +``` + +| 产物 | 版本 | 包名 | 大小 | SHA256 | +|---|---|---|---|---| +| Android release APK | 3.8.3+180 | `io.openim.flutter.demo` | 53,096,372 B | `F50D9DAA57D4BCCA6A4841F2B8156E034C794C859CEDD3C02B7856103E084913` | + +路径:`mobile-next/build/app/outputs/flutter-apk/app-release.apk`(APK 内嵌时间戳,哈希不可位级复现) + +构建期告警同 B-261:Flutter Gradle apply-script 弃用;部分依赖 Kotlin metadata 1.8.0 vs 工程预期 1.6.0。release 通过。 + +合并清单 `build/app/intermediates/merged_manifests/release/AndroidManifest.xml`:**无** `SYSTEM_ALERT_WINDOW`、**无** `ACCESS_*LOCATION`、**无** `CallService`。 + +候选包只附本卡,未发布 Gitea Release。 + +## 已测 / 未测 + +已测: + +- 定点测试 25 项通过 +- 改动文件 `flutter analyze` 无新增 error +- Android release 构建通过,合并清单无悬浮窗/定位权限 +- 通话三个入口源码仍只发 `CallType.audio`;相册/拍摄/视频消息代码未删 + +未测(不得写成已通过): + +- 真机首次安装、登录、IM 同步是否还弹出「显示在其他应用上层」 +- 前后台/锁屏语音呼出与来电 +- 历史位置消息真机展示与地图不可用回退 +- 工具箱相册/拍摄/文件/名片真机回归 + +## 越界比对 + +相对 `092039b`:仅 `mobile-next/` 与本验收文档。`mobile/`、`pc-client/`、`account-service/`、现网配置 **零改动**。