You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android 9真机App网络异常问题排查求助

针对Android 9设备网络连接失败的排查方案

结合你描述的场景——Android 5.1.1设备运行正常,但Android 9设备同一WiFi下无法联网(其他App正常),核心问题大概率和Android 9引入的网络安全策略变更有关,下面给你一步步排查和解决的方向:

1. 重点排查Android 9的明文HTTP限制

Android 9(API 28)开始,系统默认启用了cleartextTrafficPermitted=false,禁止App发起明文HTTP请求。如果你的App中存在任何非HTTPS的网络请求(包括第三方SDK的隐含请求),都会被系统拦截导致无法联网。

解决办法:

  • 优先把所有网络请求切换为HTTPS(推荐,符合安全规范)。
  • 如果暂时无法切换,可通过网络安全配置文件允许明文请求:
    1. res/xml目录下创建network_security_config.xml,内容如下:
      <?xml version="1.0" encoding="utf-8"?>
      <network-security-config>
          <base-config cleartextTrafficPermitted="true" />
      </network-security-config>
      
    2. AndroidManifest.xml<application>标签中添加引用:
      <application
          ...
          android:networkSecurityConfig="@xml/network_security_config">
          ...
      </application>
      

2. 验证Firebase配置的正确性

虽然Android 5.1.1正常,但Android 9对包名、签名校验更严格:

  • 确认google-services.json文件是对应当前App包名和签名的(特别是如果设备2上的App是用不同签名打包的)。
  • 检查Firebase控制台中是否添加了该设备对应的SHA-1指纹(调试版本需要添加调试签名的SHA-1,正式版本对应发布签名的SHA-1)。

3. 补充必要的网络相关权限

虽然INTERNET属于正常权限无需运行时申请,但建议在Manifest中补充ACCESS_NETWORK_STATE权限,帮助App更好地判断网络状态:

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

4. 排除系统级网络限制

  • 检查设备2的「应用权限管理」中,你的App是否被手动禁用了网络权限(部分定制ROM会单独控制App的联网开关,即使Manifest声明了也可能被关闭)。
  • 尝试切换到移动数据测试,排除WiFi本身的特定限制(虽然其他App正常,但不排除ROM对特定App的WiFi拦截)。

5. 通过日志定位具体原因

在设备2上运行App时,打开Logcat搜索以下关键词:NetworkSecurityPolicyCleartextFirebase,这些日志会直接告诉你连接失败的具体原因——比如是否是明文请求被拦截,或者Firebase的连接鉴权错误。

按上面的步骤排查,应该能快速定位到问题所在~

内容的提问来源于stack exchange,提问作者Mimu Saha Tishan

火山引擎 最新活动