fix(mobile): 升级 livekit_client 至 2.10.0 以兼容 Dart 3.13 并恢复安卓出包
Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
co-authored by
Cursor
multica-agent
parent
1d393f4f1e
commit
b7a31de5b6
+4
-3
@@ -1,10 +1,10 @@
|
|||||||
# 任务清单
|
# 任务清单
|
||||||
|
|
||||||
更新时间:2026-08-30。任务状态以当前仓库和项目约束为准;没有证据的事项不写成“已完成”。
|
更新时间:2026-08-31。任务状态以当前仓库和项目约束为准;没有证据的事项不写成“已完成”。
|
||||||
|
|
||||||
## 正在做
|
## 正在做
|
||||||
|
|
||||||
无。华为配置注入与 Gradle 识别已提交,等待审核。
|
无。语音组件已升级并完成整包安卓出包,等待审核。
|
||||||
|
|
||||||
## 已做完
|
## 已做完
|
||||||
|
|
||||||
@@ -19,10 +19,11 @@
|
|||||||
- 公网反向代理 / HTTPS / WSS / 防火墙与回滚说明(配置进仓库;香港测试环境已由总工部署)。
|
- 公网反向代理 / HTTPS / WSS / 防火墙与回滚说明(配置进仓库;香港测试环境已由总工部署)。
|
||||||
- 公网 overlay 用 `!override` 覆盖内部端口绑定;部署脚本校验 `SERVER_IP` 非空。
|
- 公网 overlay 用 `!override` 覆盖内部端口绑定;部署脚本校验 `SERVER_IP` 非空。
|
||||||
- 构建机本地放入华为 `agconnect-services.json`(不入库);AGConnect 插件映射/版本已按 AGP 9 补齐,Gradle 能识别包名 `cn.solsum.jinxunda`。
|
- 构建机本地放入华为 `agconnect-services.json`(不入库);AGConnect 插件映射/版本已按 AGP 9 补齐,Gradle 能识别包名 `cn.solsum.jinxunda`。
|
||||||
|
- 升级 `livekit_client` 至 `2.10.0`,在 Flutter 3.47 / Dart 3.13 下打出整包安卓 release APK。
|
||||||
|
|
||||||
## 还没安排
|
## 还没安排
|
||||||
|
|
||||||
- 在可编译 LiveKit 的环境打出安卓包,并用真机验证华为厂商通道到达。
|
- 用真机验证华为厂商通道到达,以及一对一语音通话。
|
||||||
- 组织真实手机和 Windows 电脑的回归:重点确认文件传输、一对一语音通话和杀进程后的离线通知。
|
- 组织真实手机和 Windows 电脑的回归:重点确认文件传输、一对一语音通话和杀进程后的离线通知。
|
||||||
- 明确手机正式签名的负责人和安全保管方式;不能把签名密钥提交进仓库。
|
- 明确手机正式签名的负责人和安全保管方式;不能把签名密钥提交进仓库。
|
||||||
- 获得负责人同意后,再导入真实员工名单并验证账号管理流程。
|
- 获得负责人同意后,再导入真实员工名单并验证账号管理流程。
|
||||||
|
|||||||
+6
-5
@@ -1,6 +1,6 @@
|
|||||||
# 最新进度
|
# 最新进度
|
||||||
|
|
||||||
更新时间:2026-08-30。以下内容依据当前仓库代码整理。
|
更新时间:2026-08-31。以下内容依据当前仓库代码整理。
|
||||||
|
|
||||||
## 现在做到哪里
|
## 现在做到哪里
|
||||||
|
|
||||||
@@ -21,15 +21,16 @@
|
|||||||
- 旧记录使用的是更早的提交、安装包版本和端口状态;因此已保留为档案并在开头标明过时,不能当作当前验收结论。
|
- 旧记录使用的是更早的提交、安装包版本和端口状态;因此已保留为档案并在开头标明过时,不能当作当前验收结论。
|
||||||
- 放入与 `cn.solsum.jinxunda` 匹配的真实华为配置后,Gradle `:app:processDebugAGCPlugin` 与 `:app:processReleaseAGCPlugin` 通过;debug/release/profile 均识别该配置文件。未因配置缺失或包名不一致失败。
|
- 放入与 `cn.solsum.jinxunda` 匹配的真实华为配置后,Gradle `:app:processDebugAGCPlugin` 与 `:app:processReleaseAGCPlugin` 通过;debug/release/profile 均识别该配置文件。未因配置缺失或包名不一致失败。
|
||||||
- `flutter pub get` 已写入 `jpush_flutter 3.5.6` / `jpush_flutter_android 1.0.2` 到 `mobile/pubspec.lock`。
|
- `flutter pub get` 已写入 `jpush_flutter 3.5.6` / `jpush_flutter_android 1.0.2` 到 `mobile/pubspec.lock`。
|
||||||
- `flutter analyze` 仅有 2 条既有 OpenIM `group` 弃用 info;`flutter test` 中 `config_test` 通过。
|
- `flutter analyze` 仅有 2 条既有 OpenIM `group` 弃用 info;`flutter test`(`config_test` 与登录页 widget_test)通过。
|
||||||
- 整包 `flutter build apk` 未出包:锁定的 `livekit_client 2.5.0+hotfix.3` 与 Flutter 3.47 / Dart 3.13 的空安全检查不兼容。此项不在华为配置本卡范围,未改 LiveKit 版本。
|
- 语音组件已升级到 `livekit_client 2.10.0`(配套直接依赖 `uuid 4.5.3`),Flutter 3.47 / Dart 3.13 下可编译。
|
||||||
|
- 整包 `flutter build apk` 已打出 release 安装包 `app-release.apk`,包名 `cn.solsum.jinxunda`,版本 `1.0.7+8`。
|
||||||
|
|
||||||
## 当前停在哪
|
## 当前停在哪
|
||||||
|
|
||||||
华为配置已在构建机本地注入并被 Gradle 识别。整包 APK 与真机华为通道到达,仍待后续在可编译 LiveKit 的环境或真机上完成。本轮未改测试机、未回退公网端口与部署安全修复。
|
华为配置可被 Gradle 识别,整包安卓安装包已能在当前工具链打出。真机华为通道到达率、真机一对一语音通话仍待真机验证。本轮未改测试机、未回退公网端口与部署安全修复。
|
||||||
|
|
||||||
## 已知风险和待验证事实
|
## 已知风险和待验证事实
|
||||||
|
|
||||||
- 真机上的文件传输、一对一语音通话、杀进程后的离线推送(尤其华为通道)仍需实际设备验证。
|
- 真机上的文件传输、一对一语音通话、杀进程后的离线推送(尤其华为通道)仍需实际设备验证。
|
||||||
- 整包 APK 受 `livekit_client 2.5.0+hotfix.3` 与当前 Flutter 空安全检查限制,需另卡决定是否升级 LiveKit。
|
- 当前 release 包仍用调试签名;正式签名需后续单独准备,密钥不得入库。
|
||||||
- 电脑端使用较旧的 Electron;公网接入后仍需评估 HTTPS、登录限流和跨域策略。
|
- 电脑端使用较旧的 Electron;公网接入后仍需评估 HTTPS、登录限流和跨域策略。
|
||||||
|
|||||||
@@ -81,16 +81,3 @@ kotlin {
|
|||||||
flutter {
|
flutter {
|
||||||
source = "../.."
|
source = "../.."
|
||||||
}
|
}
|
||||||
|
|
||||||
// livekit_client 插件硬编码 compileSdk = 34,但它依赖的 flutter_webrtc 要求消费者 ≥36,
|
|
||||||
// AAR 元数据校验会因此失败。:app 先于各插件求值(根脚本有 evaluationDependsOn(":app")),
|
|
||||||
// 所以在插件求值完成后把它的 compileSdk 抬到 36。
|
|
||||||
rootProject.subprojects {
|
|
||||||
if (name == "livekit_client") {
|
|
||||||
afterEvaluate {
|
|
||||||
extensions.configure<com.android.build.gradle.LibraryExtension> {
|
|
||||||
compileSdk = 36
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -7,3 +7,7 @@ android.builtInKotlin=false
|
|||||||
|
|
||||||
# 三方插件 Java/Kotlin 编译目标不一致时降级为警告(见 build.gradle.kts 注释)
|
# 三方插件 Java/Kotlin 编译目标不一致时降级为警告(见 build.gradle.kts 注释)
|
||||||
kotlin.jvm.target.validation.mode=warning
|
kotlin.jvm.target.validation.mode=warning
|
||||||
|
|
||||||
|
# jpush_flutter_android 1.0.2 的 consumer ProGuard 含 -dontoptimize,AGP 9 默认拒绝合并。
|
||||||
|
# 本应用 release 已关闭混淆;该开关只让整包构建通过,不改变极光/华为通道行为。
|
||||||
|
android.r8.globalOptionsInConsumerRules.disallowed=false
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ class CallService extends ChangeNotifier {
|
|||||||
speakerOn = !speakerOn;
|
speakerOn = !speakerOn;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
try {
|
try {
|
||||||
await Hardware.instance.setSpeakerphoneOn(speakerOn);
|
await AudioManager.instance.setSpeakerOutputPreferred(speakerOn);
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
speakerOn = !speakerOn;
|
speakerOn = !speakerOn;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
@@ -369,7 +369,7 @@ class CallService extends ChangeNotifier {
|
|||||||
}
|
}
|
||||||
// 复位免提
|
// 复位免提
|
||||||
if (speakerOn) {
|
if (speakerOn) {
|
||||||
Hardware.instance.setSpeakerphoneOn(false).catchError((_) {});
|
AudioManager.instance.setSpeakerOutputPreferred(false).catchError((_) {});
|
||||||
speakerOn = false;
|
speakerOn = false;
|
||||||
}
|
}
|
||||||
micOn = true;
|
micOn = true;
|
||||||
|
|||||||
+50
-10
@@ -9,6 +9,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.7.0"
|
version: "2.7.0"
|
||||||
|
asn1lib:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: asn1lib
|
||||||
|
sha256: "9a8f69025044eb466b9b60ef3bc3ac99b4dc6c158ae9c56d25eeccf5bc56d024"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.6.5"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -69,10 +77,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: connectivity_plus
|
name: connectivity_plus
|
||||||
sha256: b5e72753cf63becce2c61fd04dfe0f1c430cc5278b53a1342dc5ad839eab29ec
|
sha256: "762c99f890ca8bf87f7337236f99edd42793843bc6c3631da294a76653a54bd0"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.5"
|
version: "7.3.1"
|
||||||
connectivity_plus_platform_interface:
|
connectivity_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -81,6 +89,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
|
convert:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: convert
|
||||||
|
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.2"
|
||||||
cross_file:
|
cross_file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -105,6 +121,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.8"
|
version: "1.0.8"
|
||||||
|
dart_jsonwebtoken:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: dart_jsonwebtoken
|
||||||
|
sha256: ad84e60181696513d04d5f2078e0bbc20365b911f46f647797317414bdc88fbe
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.4.1"
|
||||||
dart_webrtc:
|
dart_webrtc:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -125,10 +149,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: device_info_plus
|
name: device_info_plus
|
||||||
sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a"
|
sha256: b4fed1b2835da9d670d7bed7db79ae2a94b0f5ad6312268158a9b5479abbacdd
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "11.5.0"
|
version: "12.4.0"
|
||||||
device_info_plus_platform_interface:
|
device_info_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -421,6 +445,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.2"
|
version: "0.7.2"
|
||||||
|
json_annotation:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: json_annotation
|
||||||
|
sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.12.0"
|
||||||
just_audio:
|
just_audio:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -481,10 +513,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: livekit_client
|
name: livekit_client
|
||||||
sha256: "011affc0fca22b2f9b0e8827219dad9948f84f2bf057980693de13039de904c7"
|
sha256: "9160950ff87d1946959e4911c16236ea7a3e74ac1987990b258132fd4ed0fca9"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.0+hotfix.3"
|
version: "2.10.0"
|
||||||
logger:
|
logger:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -701,14 +733,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.8"
|
version: "2.1.8"
|
||||||
|
pointycastle:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pointycastle
|
||||||
|
sha256: "92aa3841d083cc4b0f4709b5c74fd6409a3e6ba833ffc7dc6a8fee096366acf5"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.0"
|
||||||
protobuf:
|
protobuf:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: protobuf
|
name: protobuf
|
||||||
sha256: de9c9eb2c33f8e933a42932fe1dc504800ca45ebc3d673e6ed7f39754ee4053e
|
sha256: "75ec242d22e950bdcc79ee38dd520ce4ee0bc491d7fadc4ea47694604d22bf06"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.2.0"
|
version: "6.0.0"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -934,10 +974,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: uuid
|
name: uuid
|
||||||
sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8
|
sha256: "1fef9e8e11e2991bb773070d4656b7bd5d850967a2456cfc83cf47925ba79489"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.5.2"
|
version: "4.5.3"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
+5
-4
@@ -29,14 +29,15 @@ dependencies:
|
|||||||
file_picker: 10.3.3
|
file_picker: 10.3.3
|
||||||
# 发图片消息时选相册图片
|
# 发图片消息时选相册图片
|
||||||
image_picker: 1.1.2
|
image_picker: 1.1.2
|
||||||
# 一对一语音通话(LiveKit SFU,版本取自官方样板工程 openim_live/pubspec.yaml)
|
# 一对一语音通话(LiveKit SFU)。2.10.0 起修复 Dart 3.13 空安全编译错误,
|
||||||
livekit_client: 2.5.0+hotfix.3
|
# 是当前 Flutter 3.47 / Dart 3.13 下改动最小的稳定版本。
|
||||||
|
livekit_client: 2.10.0
|
||||||
# 麦克风权限申请
|
# 麦克风权限申请
|
||||||
permission_handler: 11.4.0
|
permission_handler: 11.4.0
|
||||||
# 打开收到的文件
|
# 打开收到的文件
|
||||||
open_filex: 4.7.0
|
open_filex: 4.7.0
|
||||||
# 通话房间号
|
# 通话房间号(livekit_client 2.10.0 要求 >=4.5.3)
|
||||||
uuid: 4.5.2
|
uuid: 4.5.3
|
||||||
# 极光推送官方 Flutter 插件(MIT);厂商通道另见 jpush_flutter_android
|
# 极光推送官方 Flutter 插件(MIT);厂商通道另见 jpush_flutter_android
|
||||||
jpush_flutter: 3.5.6
|
jpush_flutter: 3.5.6
|
||||||
jpush_flutter_android: 1.0.2
|
jpush_flutter_android: 1.0.2
|
||||||
|
|||||||
Reference in New Issue
Block a user