You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo开发构建iOS权限失效求助(Expo Go运行正常)

解决Expo开发构建iOS中ExpoCamera模块失效问题

问题分析

核心问题是开发构建(Dev Build)中ExpoCamera原生模块未正确集成,导致相机权限请求和相机组件无法正常工作——Expo Go因预集成所有Expo模块所以能正常运行,而开发构建需要手动确保原生代码正确注入模块配置。报错里的Cannot find native module 'ExpoCamera'直接说明原生层未加载到相机模块,后续的"main未注册"是模块加载失败引发的连锁错误。

解决方案

1. 检查依赖兼容性

运行 expo doctor 命令,排查expo-camera、expo-image-picker与当前Expo SDK版本的兼容性,修复所有依赖冲突或版本不匹配问题。

2. 重新生成开发构建

Expo插件(app.json中配置的expo-camera、expo-media-library插件)需要在构建时将配置注入原生代码,旧的开发构建可能未应用最新配置:

  • 云端构建:执行 eas build --profile development --platform ios
  • 本地开发构建:执行 expo run:ios(需确保已安装expo-dev-client)

3. 清理冗余权限配置

你在app.json的ios.infoPlist中重复配置了相机和相册权限,同时又通过Expo插件配置权限,这会导致冲突。保留插件配置,删除ios.infoPlist中的重复权限条目——Expo插件会自动生成符合要求的info.plist内容。

修改后的app.json ios字段简化为:

"ios": {
  "supportsTablet": true,
  "bundleIdentifier": "com.iseoluwa411.mySocialMediaApp"
}

4. 修复代码逻辑错误

组件中有一处逻辑反转错误,会导致相机权限正常时反而显示"无相机权限":

// 原错误代码
if (states.hasCameraPermission) {
  return <Text>No access to camera</Text>;
}

改为:

if (!states.hasCameraPermission) {
  return <Text>No access to camera</Text>;
}

5. 清除缓存

  • 清除Metro缓存:执行 npx expo start --clear
  • 清除iOS本地构建缓存:删除项目根目录下的ios/build文件夹,再重新执行expo run:ios

关于苹果开发者账号的说明

不需要付费的苹果开发者账号也能进行iOS开发构建:

  • 本地构建可使用个人团队证书直接安装到模拟器或连接的真机
  • 云端构建可选择"Ad Hoc"或"Development"证书类型,通过TestFlight进行内部测试

内容的提问来源于stack exchange,提问作者Iseoluwa ariyibi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 20:20:56