React Native Expo配置usesCleartextTraffic报错如何解决
报错原因
Expo 对app.json的配置字段做了强schema校验,android配置节点下没有和原生属性同名的顶层usesCleartextTraffic字段,直接添加就会触发你看到的「should NOT have additional property」报错。
根据你当前使用的Expo工作流,选对应方案配置即可:
托管工作流(未导出原生工程,Managed Workflow)
不需要手动修改原生文件,两种配置方式选其一就行:
方式1:使用官方封装配置项(SDK 45及以上版本推荐)
注意:所有Expo配置都必须放在expo根节点下,不要在配置文件根级新增android字段,否则也会触发校验错误
配置示例:
{ "expo": { // 其余expo全局配置保持不变 "android": { // 其余android相关配置保持不变 "usesCleartextTraffic": true } } }
配置完成后重新构建开发客户端/生产包即可生效,Expo Go环境默认已经开启明文流量支持,不需要额外配置。
方式2:直接覆写Manifest配置(全SDK版本通用)
如果你的SDK版本低于45,或者方式1配置不生效,可以直接通过Expo提供的Manifest覆写能力给application标签注入属性:
{ "expo": { "android": { "manifest": { "application": { "$": { "android:usesCleartextTraffic": "true" } } } } } }
裸工作流(已导出原生工程,Bare Workflow)
如果项目已经执行过npx expo prebuild导出了完整原生工程,直接修改原生Manifest文件即可:
- 打开路径
android/app/src/main/AndroidManifest.xml - 找到
<application>标签,直接添加android:usesCleartextTraffic="true"属性,示例:
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:usesCleartextTraffic="true" ...其余原有属性 > <!-- 其余标签内容保持不变 --> </application>
安全提示:开启明文流量允许应用发起未加密的HTTP请求,会降低通信安全性,建议仅在本地调试、对接测试环境时开启,生产环境尽量关闭,所有服务接口使用HTTPS协议。
内容的提问来源于stack exchange,提问作者Carlos Craig
相关产品推荐
相关产品推荐

