Skip to content

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 地址并拉取会话列表?
    • 关键字搜索:onConnectSuccessSyncing...

5. 异常场景测试

  • [ ] 断网重连:手动断开 Wi-Fi/移动数据再开启,观察 Dynamic Domain 是否自动恢复,以及 OpenIM 是否能自动重新登录。
  • [ ] 节点切换:在 dispatch_server 修改节点配置,观察客户端是否在下次启动或触发重连时切换到新节点。

注:由于 OpenIM 的核心是 Go 编写的,无法直接通过 Flutter 的 HttpOverrides 劫持,必须依赖 ALL_PROXY 环境变量或 setProxy 接口。

基于 MIT 许可发布