上传App至App Store Connect报ITMS-90338非公开API错误如何解决
App Store Connect上传报VALIDATION_ERROR.50(webview_flutter_wkwebview非公开selector引用)解决方法
该报错属于苹果静态扫描规则更新导致的API误判,你提到的四个selector:initWithFrame:configuration:、isMainFrame、setNavigationDelegate:、userContentController全是WKWebView相关的公开系统API,和你是否修改过webview_flutter依赖代码没有直接关系,旧版本Xcode打包的产物在新的扫描规则下触发概率极高,按以下优先级排查修复即可:
- 升级webview_flutter_wkwebview依赖版本
官方已经针对该扫描误判问题发布了适配版本,在Flutter项目根目录执行以下命令升级对应依赖:
如果项目其他依赖锁了版本无法升级到最新版,直接在flutter pub upgrade webview_flutter webview_flutter_wkwebviewpubspec.yaml中指定适配修复的最低版本:webview_flutter_wkwebview: ^3.4.2,升级完成后执行flutter clean清除缓存,重新打包上传即可。 - 调整Xcode打包配置规避扫描(无法升级依赖时使用)
打开iOS工程下的Runner.xcworkspace,选中Runner target的Build Settings项做以下修改:- 将
Strip Style配置值改为All Symbols - 在
Other Linker Flags配置项中新增参数-Wl,-S,打包时移除冗余符号表信息,避免扫描时误匹配selector字符串
配置完成后先清理Xcode缓存:点击Xcode菜单栏Product > Clean Build Folder,同时删除DerivedData目录下对应项目的缓存文件,重新执行Archive打包上传。
- 将
- 升级Xcode版本重新打包
你当前使用的Xcode 13.4.1版本打包生成的Framework符号结构更容易触发苹果的误扫描规则,有条件的话升级到Xcode 14.2及以上正式版,不需要修改任何代码或依赖,重新打包即可通过校验。
注意:不要手动修改webview_flutter_wkwebview源码重命名上述selector,这些都是系统公开API,强行修改会导致WebView相关功能运行崩溃,所有修复方案都是为了规避静态扫描的误判逻辑,不需要改动实际API调用逻辑。
内容的提问来源于stack exchange,提问作者Kazeke
相关产品推荐
相关产品推荐

