使用Expo+React Native通过EAS构建提交iOS应用时遭遇ITMS-90683隐私权限用途字符串缺失错误
我明白你现在遇到的头疼问题——明明在app.json里加了相机权限的用途描述,用EAS构建提交iOS还是触发ITMS-90683错误,连buildNumber都没更新上。我帮你一步步排查解决:
核心问题定位
首先看你的app.json,里面有一个明显的语法错误,这是导致所有配置不生效的根源:
在experiments区块中,reactCompiler的值写成了trupe(拼写错误),正确的布尔值应该是true。这个错误会让Expo无法完整解析你的app.json,直接忽略后续的权限描述、buildNumber等配置,复用旧缓存或默认配置。
逐步解决步骤
1. 修复app.json语法错误
打开app.json,修正experiments区块的拼写错误:
"experiments": { "typedRoutes": true, "reactCompiler": true }
这是解决所有问题的前提,必须先修正!
2. 统一隐私权限配置,避免冲突
你的app.json同时在ios.infoPlist和expo-build-properties插件中重复配置了隐私权限,可能导致冲突。建议保留ios.infoPlist下的配置,移除插件中的重复项:
修改expo-build-properties插件配置为:
[ "expo-build-properties", {} ]
如果项目不需要该插件的其他功能(如修改Xcode版本),也可以直接把这个插件从plugins数组中删除。
3. 清理不必要的依赖配置
我注意到你的plugins里配置了expo-camera,但package.json的dependencies中没有安装这个依赖:
- 如果App需要相机功能,先安装依赖:
npx expo install expo-camera - 如果不需要相机功能,直接从
plugins数组中删除expo-camera的配置项,避免触发不必要的权限检查。
4. 清理EAS缓存,强制使用新配置
EAS的构建缓存可能会复用旧配置,执行构建时加上--clear-cache参数:
eas build --platform ios --clear-cache
5. 确保buildNumber正确更新
如果buildNumber仍未更新,尝试以下方式:
- 构建时手动指定buildNumber:
eas build --platform ios --build-number 3 --clear-cache - 或用EAS CLI设置版本号:
完成后再重新构建。eas build:version:set --ios 3
验证配置是否生效
构建完成后,你可以下载.ipa产物,解压后找到TheBesteSIM.app包内的Info.plist,检查是否包含你配置的NSCameraUsageDescription等权限key,确认配置已正确注入。
额外注意事项
- 隐私权限的用途描述尽量清晰(比如“需要访问相机以拍摄并上传身份凭证”),虽然苹果主要检查key是否存在,但明确的描述能提升用户体验,也避免审核质疑。
- 若使用了
expo-image等可能间接涉及敏感权限的依赖,确保对应的隐私key已添加到ios.infoPlist中。
按照以上步骤操作后,应该能顺利解决ITMS-90683错误和buildNumber不更新的问题,完成App Store Connect的提交。




