OpenIM + Dynamic Domain 集成验证清单
为了确保 SDK 已成功集成且 OpenIM 的流量确实通过了隧道,请按照以下步骤进行验证:
1. 编译阶段 (Android)
- [ ] 是否出现了
Duplicate class go.Seq错误?- 如果是,是否使用了
strip_go.sh剥离了tunnel_core.aar? - 验证:解压剥离后的 AAR,确认
classes.jar中不再包含go/目录。
- 如果是,是否使用了
- [ ] 运行
flutter clean && flutter run确保没有缓存干扰。
2. 启动时序验证
- [ ] 日志确认:
Dynamic Domain隧道是否在OpenIM.initSDK之前启动成功?- 关键字搜索:
Tunnel started successfully
- 关键字搜索:
- [ ] 端口确认:日志中输出的本地 SOCKS5 端口是否有效?
- 关键字搜索:
Starting tunnel on port XXXX
- 关键字搜索:
3. 环境变量验证 (关键)
- [ ] 在
proxy.applyToEnvironment()后,打印环境变量ALL_PROXY。- 代码:
print(Platform.environment['ALL_PROXY']); - 预期:应输出
socks5://127.0.0.1:XXXX。
- 代码:
4. 流量抓包验证 (核心)
- [ ] Charles/Fiddler 观察:
- Flutter 层的 HTTP 请求(如 API 调用)是否出现在抓包工具中(通过本地 HTTP 代理)?
- [ ] 服务端日志观察:
- 在
dispatch_server或节点服务器上,观察是否有来自客户端 IP 的流量。
- 在
- [ ] OpenIM 状态验证:
- 在网络受限环境下,OpenIM 是否能成功连接到 WS 地址并拉取会话列表?
- 关键字搜索:
onConnectSuccess或Syncing...
5. 异常场景测试
- [ ] 断网重连:手动断开 Wi-Fi/移动数据再开启,观察
Dynamic Domain是否自动恢复,以及OpenIM是否能自动重新登录。 - [ ] 节点切换:在
dispatch_server修改节点配置,观察客户端是否在下次启动或触发重连时切换到新节点。
注:由于 OpenIM 的核心是 Go 编写的,无法直接通过 Flutter 的 HttpOverrides 劫持,必须依赖 ALL_PROXY 环境变量或 setProxy 接口。