Android 11-13出现UnknownHostException无法解析域名求助
背景
我开发的Android应用拥有超过10万活跃用户,部分功能需与后端服务器进行网络交互,该后端使用Cloudflare DNS。
问题
有部分用户在访问后端时遇到UnknownHostException错误。
应用中部分操作会先与Google API通信,之后才出现域名解析错误,因此我确信用户网络连接正常。该错误随机出现,我个人无法复现。
我已查阅以下资料:
- Does Android DNS need warm up?
- Android: Flush DNS
- java.net.UnknownHostException: Unable to resolve host "domain.com": No address associated with hostname
- How can I flush the DNS cache?
并搜索了相关内容,但多数答案针对Android ≤4.0,而受影响用户使用的是Android 11-13,理论上DNS缓存问题已修复。
我也曾考虑用户仅拥有IPv6地址,但InetAddress.getAllByName应仍能解析后端IP地址。
已尝试方案
作为临时方案,我尝试使用InetAddress.getAllByName手动解析域名,最多重试10次,每次间隔1秒,因部分帖子提到Android首次请求可能解析失败,但此方法无效,用户仍会偶尔遇到相同错误。
我还尝试设置:
System.setProperty("networkaddress.cache.ttl", "5"); System.setProperty("networkaddress.cache.negative.ttl", "0");
不过自Android 5起,此设置可能已对Android无影响。
我不想采用手动解析记录的方案,因为这应由操作系统处理。
求助
是否有人遇到过类似问题并知晓可行的解决方法?如前所述,手动解析虽可选,但在外部DNS流量被拦截的企业网络中可能失效。
内容的提问来源于stack exchange,提问作者davidgiga1993
相关产品推荐
相关产品推荐

