You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端gRPC请求抛出UNAVAILABLE异常,连接超时求助

解决Android gRPC连接超时(UNAVAILABLE)问题

排查步骤与解决方案

1. 确认网络权限配置

Android 23+需同时在Manifest声明权限,并动态申请网络权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Android 10及以上需检查应用设置里的网络访问权限是否开启,后台线程发起请求时,避免被系统限制网络。

2. 处理明文流量限制(Android 9+)

若服务端未配置SSL/TLS,需允许明文流量:

  • 直接在AndroidManifest.xml的application标签添加:
android:usesCleartextTraffic="true"
  • 或创建res/xml/network_security_config.xml,仅允许指定IP的明文流量:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">192.168.1.35</domain>
    </domain-config>
</network-security-config>

再在Manifest的application标签引用:

android:networkSecurityConfig="@xml/network_security_config"

3. 修正服务端监听地址

确保服务端gRPC服务监听0.0.0.0而非127.0.0.1,后者仅允许本地访问。以Java服务端为例:

Server server = ServerBuilder.forPort(8445)
    .addService(new YourServiceImpl())
    .build()
    .start();

默认监听0.0.0.0,若手动指定127.0.0.1需修改。

4. 验证局域网连通性

  • 在Android设备上执行ping 192.168.1.35,若不通,检查设备是否在同一WiFi网络,路由器是否开启AP隔离(部分路由器默认开启,会阻止设备间通信)。
  • 用telnet 192.168.1.35 8445测试端口,若无法连接,说明服务端未正常监听端口,或存在端口冲突。

5. 确保异步执行gRPC请求

Android禁止主线程发起网络请求,需在子线程执行,示例:

CoroutineScope(Dispatchers.IO).launch {
    val channel = ManagedChannelBuilder.forAddress("192.168.1.35", 8445)
        .usePlaintext()
        .build()
    val stub = YourServiceGrpc.newBlockingStub(channel)
    try {
        val response = stub.yourRpcMethod(YourRequest.newBuilder().build())
        // 处理响应
    } catch (e: StatusRuntimeException) {
        // 处理异常
    } finally {
        channel.shutdown()
    }
}

6. 对齐gRPC版本

确保服务端与客户端的gRPC版本一致,避免版本不兼容导致连接失败。

附加检查项

  • 关闭笔记本杀毒软件,部分软件会拦截局域网端口通信。
  • 更换Android设备测试,排除设备本身网络问题。

内容的提问来源于stack exchange,提问作者Jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:11:31