因代码签名错误无法在iOS设备运行React Native应用
问题描述
- Expo部署的React Native应用,原归属另一账号,Bundle ID为
com.bcc.quickpass,现已转移至当前账号 - 自动签名构建后应用无法启动,Xcode日志提示:因无效代码签名、权限不足或配置文件未被信任导致无法启动
com.bcc.quickpass - 使用
expo run:ios和react-native run-ios构建均出现CodeSign失败错误,错误码errSecInternalComponent - 已尝试创建新的CSR、开发证书及签名配置文件,问题依旧
- 环境:macOS Big Sur(11.4),Xcode 13.2.1(13C100),iOS设备版本14.1
解决方案
1. 彻底清理旧签名残留
- 删除钥匙串中所有与原账号、目标Bundle ID相关的证书:打开钥匙串访问,搜索
com.bcc.quickpass和原账号邮箱,删除所有匹配项 - 清除本地配置文件:前往
~/Library/MobileDevice/Provisioning Profiles,删除所有旧的配置文件 - 清理Xcode缓存:打开Xcode按
Cmd+Shift+K清理构建缓存,再删除~/Library/Developer/Xcode/DerivedData下对应项目的文件夹 - 清除Expo项目缓存:运行
expo r -c
2. 重置项目签名关联
- 重新关联Expo账号:运行
expo login确认当前账号正确,执行expo build:ios --clear-credentials清除旧凭证,重新生成签名配置 - 手动配置Xcode签名:
- 打开项目ios目录下的
.xcworkspace文件 - 进入项目目标的
Signing & Capabilities标签页 - 取消再重新勾选
Automatically manage signing,选择当前账号的开发团队 - 确认Bundle ID为
com.bcc.quickpass,若配置文件不匹配,点击Download Manual Profiles手动下载导入
- 打开项目ios目录下的
3. 修复errSecInternalComponent签名错误
- 调整钥匙串权限:打开钥匙串访问,右键点击「登录」钥匙串→「显示简介」,在「访问控制」标签页,确保
CodeSign被允许访问,或临时选择「允许所有应用访问此项目」测试 - 重启签名服务:终端运行
sudo security restart-keychain,之后重启Mac - 赋予Xcode磁盘权限:系统偏好设置→安全性与隐私→隐私→完全磁盘访问,勾选Xcode
4. 设备端信任配置
- 在iOS设备上进入「设置」→「通用」→「VPN与设备管理」,找到当前开发者账号的证书,点击「信任」
- 确认设备UDID已添加到Apple开发者后台的设备列表,且包含在当前使用的开发配置文件中
5. 版本兼容性调整
- Xcode 13.2.1与macOS Big Sur 11.4存在部分兼容性问题,可尝试降级Xcode到13.1版本,或升级macOS到Monterey(若条件允许)
- 确认项目的Deployment Target设置为14.1或更低版本,匹配设备系统
内容的提问来源于stack exchange,提问作者desertSniper87
相关产品推荐
相关产品推荐

