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

Android端AWS Cognito登录突然异常缓慢问题求助

解决AWS Cognito Android登录卡顿(getaddrinfo延迟)的问题

从你的日志和描述来看,核心问题是DNS解析延迟——getaddrinfo调用间隔极长,说明你的Android设备在解析AWS Cognito相关域名时遇到了阻塞,这也是整个登录流程耗时近3分钟的直接原因。结合iOS端正常的情况,AWS用户池本身应该没有问题,问题大概率出在Android设备的网络配置或SDK的域名解析逻辑上,给你几个针对性的排查和解决方向:

1. 优先检查设备DNS配置

getaddrinfo是系统级的域名解析调用,延迟通常和DNS服务器有关:

  • 尝试切换设备的DNS服务器,比如把默认的运营商DNS换成公共DNS(如Google的8.8.8.8或Cloudflare的1.1.1.1)。
  • 切换网络环境:比如从当前WiFi切换到移动数据,或者连接其他WiFi网络,排查是否是当前网络的DNS/防火墙限制了AWS域名的解析。

2. 锁定AWS SDK版本并检查依赖

虽然你回滚了代码,但如果你的Gradle依赖使用了动态版本(比如com.amazonaws:aws-android-sdk-cognito:2.+),可能会自动拉取更新后的SDK版本,而新版本的解析逻辑可能存在问题:

  • 把AWS相关SDK的版本锁定为之前正常运行时的固定版本,比如:
    implementation 'com.amazonaws:aws-android-sdk-cognito:2.22.1' // 替换为你之前正常的版本号
    implementation 'com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.22.1'
    
  • 执行./gradlew clean build清理并重新构建项目,确保依赖完全更新为指定版本。

3. 手动指定Cognito用户池端点

有时候AWS SDK自动生成的端点可能存在解析异常,你可以手动指定用户池的端点URL来绕过自动解析:

  • 在初始化CognitoUserPool时,直接传入用户池的完整端点(格式为https://<user-pool-id>.<region>.amazoncognito.com),示例代码:
    CognitoUserPool userPool = new CognitoUserPool(
        getApplicationContext(),
        "YOUR_USER_POOL_ID",
        "YOUR_CLIENT_ID",
        "YOUR_CLIENT_SECRET",
        Regions.YOUR_REGION,
        new ClientConfiguration().withEndpoint("https://your-user-pool-id.us-east-1.amazonaws.com") // 手动指定端点
    );
    

4. 清除设备DNS缓存

Android设备的DNS缓存可能存在 stale 记录,导致解析延迟:

  • 开启飞行模式等待10秒后关闭,强制刷新DNS缓存;
  • 如果是连接WiFi,可以重启路由器,清除路由器端的DNS缓存。

5. 排查网络拦截

如果你的设备在公司内网或使用VPN,可能存在防火墙或代理拦截了AWS Cognito的域名:

  • 暂时关闭VPN或切换到非内网环境测试;
  • 检查是否有安全应用(如杀毒软件、网络管理工具)限制了应用的网络请求。

如果以上方法都无法解决,建议抓包分析Android设备的网络请求,看DNS解析阶段的具体耗时和返回结果,进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:48:58