如何使用Expo移除iOS应用Info.plist中的冗余权限配置
Expo项目移除iOS端冗余Info.plist权限操作方案
- 第一步:先排查依赖来源
首先确认项目中是否安装了带麦克风采集能力的依赖(常见的包括expo-av、expo-camera、expo-image-picker部分版本、音视频通话类第三方RN包),如果相关包完全没有在业务中使用,直接卸载对应依赖后重新执行expo config --type introspect,对应自动注入的权限项会直接消失,这是最彻底的处理方式。 - 第二步:显式覆盖配置移除冗余权限
如果相关依赖需要保留,但业务逻辑中确实不会用到麦克风能力,直接在项目的app.json(或app.config.js)的iOS配置节点下,将不需要的权限字段显式设为null即可,Expo配置合并逻辑遇到null值时会直接剔除自动注入的对应字段,不会写入最终打包生成的Info.plist文件。
配置示例:
注意:不要将字段设置为空字符串,空值会被写入Info.plist,提交App Store审核时会因为权限描述缺失被驳回。{ "expo": { "ios": { "infoPlist": { "NSMicrophoneUsageDescription": null } } } } - 第三步:验证配置生效
配置修改完成后,重新执行expo config --type introspect,检查输出内容中ios.infoPlist节点下是否已经不存在NSMicrophoneUsageDescription字段,确认消失后正常走构建流程即可。
不要手动修改
ios/目录下原生文件或者node_modules内的配置,这类修改在下次执行expo prebuild或者EAS云构建时会被自动生成的配置覆盖,无法持久生效。
如果配置完null之后权限依然存在,检查项目中引用的自定义Expo config插件是否硬编码注入了该权限,这类场景需要调整对应插件的配置,或者在插件链最后新增自定义清理插件移除对应字段,绝大多数常规项目不需要做这一步。
内容的提问来源于stack exchange,提问作者Luz Perez
相关产品推荐
相关产品推荐

