Android应用Firebase Robo测试失败:明文Raw Socket连接问题排查
Firebase Robo测试无法建立明文Raw Socket连接的解决办法
先排查测试实验室的网络限制
- Firebase测试实验室的设备默认可能限制非标准端口的明文Socket连接,要是你的服务器用的不是80、443这类常规端口,先临时切到80端口试试能不能连上。
- 确认你的服务器是公网可访问的,内网服务器大概率在测试实验室环境下连不上,换公网地址测试再说。
补全Manifest必要配置
- 一定要加
INTERNET权限,真机可能默认放行,但测试实验室环境权限校验更严:<uses-permission android:name="android.permission.INTERNET" /> - 检查
network_security_config.xml的配置,Raw Socket虽不受WebView配置完全约束,但给目标服务器加个豁免试试:
别忘了在Manifest的<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">你的服务器域名/IP</domain> </domain-config> </network-security-config>application标签里关联这个配置:android:networkSecurityConfig="@xml/network_security_config"
细化Socket连接的调试日志
- 在Socket打开前多打些日志,比如服务器地址、端口,还有当前线程信息,确认Robo测试到底有没有走到连接代码这一步。
- 显式用
InetAddress解析服务器地址,避免隐式解析出问题:InetAddress serverAddr = InetAddress.getByName("你的服务器地址"); Socket socket = new Socket(serverAddr, 你的端口); - 捕获所有异常(包括
ConnectException、UnknownHostException这些子类),打印完整的异常栈,测试实验室日志需要明确的错误信息才能定位问题。
调整Robo测试的执行逻辑
- Robo测试可能在应用刚启动就跑操作,这时候Socket初始化逻辑还没触发。要么给测试加个延迟,要么确保Robo的操作路径能触发连接代码。
- 换成Firebase Test Lab的自定义测试脚本(比如Espresso),手动触发Socket连接,这样能精准控制流程,更容易排查问题。
内容的提问来源于stack exchange,提问作者Radhika WG
相关产品推荐
相关产品推荐

