Ionic 6 Cordova+Xcode14上传App时出现无具体选择器的私有选择器引用错误
解决App Store上传报错“App references non-public selectors in Payload”
错误说明
这个报错是苹果检测到你的App调用了iOS系统的非公开选择器(私有API),这类API是苹果未对外开放的方法,存在稳定性风险,因此会被上传流程拦截。当前上传工具未显示具体违规选择器名称,需要手动排查定位。
定位具体非公开选择器
1. 通过Xcode日志获取完整信息
上传完成后,打开Xcode的Window > Organizer,找到对应App的上传记录,点击Logs标签,在日志中搜索non-public selectors,通常能找到具体的违规选择器名称。
2. 手动扫描App包
- 找到生成的
.ipa文件,右键选择「显示包内容」,进入Payload文件夹,找到与App同名的可执行文件。 - 打开终端,执行以下命令扫描所有引用的选择器:
otool -oV /路径/到/App可执行文件 | grep -E 'selector ref:@selector' > all_selectors.txt
将生成的all_selectors.txt中的选择器与苹果官方API文档对比,筛选出未公开的私有方法。
针对Ionic+Cordova环境的排查方向
你的项目使用了20多个Cordova插件,大概率是第三方插件引入了私有API,可按以下步骤排查:
- 逐个排查插件:先移除部分插件,打包上传测试,逐步缩小范围,定位到违规的插件。
- 更新插件版本:将
cordova-plugin-ionic-webview、cordova-plugin-ionic-keyboard等核心插件更新到最新稳定版,旧版本可能存在过时的私有API调用。 - 检查插件原生代码:对怀疑的插件,查看其
src/ios目录下的.m/.h文件,确认是否存在调用苹果未公开的方法(如下划线开头的方法、官方文档无记录的方法)。
注意事项
不建议使用临时绕过方案(如修改Info.plist),这类方法无法保证通过审核,找到并修复私有API调用才是根本解决途径。
内容的提问来源于stack exchange,提问作者Chandra T
相关产品推荐
相关产品推荐

