Expo iOS构建包在启动屏阶段崩溃,报错_checkBackgroundRefreshAPIAdoption
问题原因与排查方案
这个崩溃是iOS 16及以上系统新增的后台刷新API合规性校验触发的,_checkBackgroundRefreshAPIAdoption是UIKit的内部校验方法,当你的App声明了后台权限但没有对应合规的API调用、或者权限配置缺失时就会触发崩溃,可按以下步骤排查:
- 首先检查项目
app.json/app.config.js中ios.infoPlist的配置:
删掉UIBackgroundModes字段下所有不需要的后台模式声明,如果确实需要用到后台定位、后台刷新能力,必须同时补充完整对应的权限描述字段,包括NSLocationAlwaysAndWhenInUseUsageDescription、NSLocationWhenInUseUsageDescription等,不能缺项。 - 排查Expo SDK与依赖兼容性:
运行npx expo install --fix同步所有依赖的版本,确保所有安装的第三方库和你当前使用的Expo SDK版本兼容。如果使用了expo-build-properties插件,确认iOS的最低部署版本deploymentTarget设置为13.0或更高,过低的部署版本会触发新系统的API校验异常。 - 清理缓存重新构建:
先执行npx expo prebuild --clean清理本地原生构建缓存,再重新执行打包命令。如果使用EAS云端打包,在eas.json的iOS构建配置中添加"cache": {"disabled": true}关闭云端缓存,避免旧的配置残留影响构建结果。
如果以上步骤执行后仍存在崩溃,可打开iOS目录下的Xcode工作区文件,直接在Xcode中运行Release模式构建,可在控制台获取更详细的崩溃调用栈,定位触发校验的具体依赖。
内容的提问来源于stack exchange,提问作者iwk549
相关产品推荐
相关产品推荐

