fix: 修复 release 包消息组件永久无响应(B-58 用户手机登录卡死的根因)
根因两条,叠加导致 release 包 initSDK 永不返回:
1. AGP 9 默认开启 R8 混淆,OpenIM 插件用反射按字段名分发方法
(getDeclaredField("imManager")),混淆后抛 NoSuchFieldException 被静默吞掉,
Dart 侧 Future 永远 pending —— 表现为「消息组件初始化超时」
2. 插件 manifest 漏声明 ACCESS_NETWORK_STATE,onAttachedToEngine 里
registerDefaultNetworkCallback 抛 SecurityException,注册中断
修复:
- release 关闭 isMinifyEnabled / isShrinkResources(与官方样板工程配置一致)
- App manifest 补 ACCESS_NETWORK_STATE
已在模拟器上用同版本 SDK 最小复现 App 验证:修复前 release 必现卡死,
修复后 initSDK 返回 true、connect SUCCESS、login 成功。debug 包之前正常
(debug 不混淆),与此结论一致。版本号 1.0.5+6
This commit is contained in:
@@ -35,6 +35,11 @@ android {
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
// OpenIM 插件靠反射按字段名分发方法调用,R8/混淆会把字段改名导致
|
||||
// 所有 SDK 调用静默无响应(表现为 initSDK 永久不返回)。
|
||||
// 与官方样板工程一致:release 关闭混淆和资源压缩。
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// TODO: Add your own signing config for the release build.
|
||||
// Signing with the debug keys for now, so `flutter run --release` works.
|
||||
signingConfig = signingConfigs.getByName("debug")
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 网络(OpenIM / 登录 / LiveKit 都要) -->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<!-- OpenIM 插件注册网络状态监听必须要这个权限;插件自身 manifest 漏了声明,
|
||||
缺它 release 包会 SecurityException 导致插件注册失败、SDK 全部调用无响应 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<!-- 语音消息录音与语音通话 -->
|
||||
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
|
||||
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
name: changlian
|
||||
description: 畅联 —— 公司内部通讯 App(手机端)
|
||||
publish_to: "none"
|
||||
version: 1.0.4+5
|
||||
version: 1.0.5+6
|
||||
|
||||
environment:
|
||||
sdk: ">=3.6.0 <4.0.0"
|
||||
|
||||
Reference in New Issue
Block a user