如何无需设置android:usesCleartextTraffic="true"部署Flutter Android应用?
不用开
android:usesCleartextTraffic="true",解决Firebase模拟器部署问题 下面是几种合规且安全的解决办法:
1. 确认所有Firebase请求使用HTTPS
Firebase官方的所有服务(数据库、认证、存储等)都支持HTTPS,先检查代码中的请求端点:
- Realtime Database地址必须是
https://<你的项目ID>.firebaseio.com/,不要写成http://开头 - Firebase Storage的地址默认就是HTTPS,避免手动修改为HTTP
- 自定义的API请求也全部切换为HTTPS,这是最稳妥的方案,完全符合Android安全规范
2. 为特定域名开放明文流量(比全局设置更安全)
如果确实有测试环境的Firebase相关服务只能使用明文,不要全局开启usesCleartextTraffic,通过网络安全配置精准控制:
- 在
res/xml目录下创建network_security_config.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <!-- 替换为你需要放行明文的Firebase相关域名,比如测试环境的数据库地址 --> <domain includeSubdomains="true">your-test-firebase-domain.com</domain> </domain-config> </network-security-config>
- 在
AndroidManifest.xml的application标签中引用该配置:
<application ... android:networkSecurityConfig="@xml/network_security_config"> ... </application>
这种方式仅对指定域名开放明文流量,其他请求仍强制使用HTTPS,安全性更高。
3. 检查模拟器的网络环境
有时候模拟器的代理、DNS配置异常,会导致HTTPS请求失败,误以为需要开启明文:
- 关闭模拟器的代理设置(如果之前开启过)
- 重启模拟器,或切换模拟器的网络类型(比如从Wi-Fi切换到蜂窝网络)
- 在模拟器浏览器中打开
https://firebase.google.com,确认能正常访问HTTPS站点
4. 更新Firebase SDK到最新版本
旧版本的Firebase SDK可能存在端点配置兼容性问题,更新到最新版可避免这类问题:
- 在项目的
build.gradle(项目级)和app/build.gradle(模块级)中,将Firebase相关依赖更新为官方最新版本 - 同步Gradle后重新构建项目
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

