React原生68.5:iOS存档上传- ITMS-90338:非公共API用法:重新使用_SSL_CTX_设置_选项和_SSL_会话

wkyowqbh  于 2022-12-14  发布在  React
关注(0)|答案(1)|浏览(197)

我想上传一个React Native应用程序到应用程序商店。它可以在模拟器和真实的设备上运行,但当我创建一个存档并尝试上传时,我收到了以下电子邮件:
尊敬的开发人员,我们发现您的应用程序“APP NAME”3.2.6(18)的最近交付存在一个或多个问题。请更正以下问题,然后重新上传。ITMS-90338:非公共API用法

  • 应用程序引用了应用程序名称中的非公共符号:_SSL_CTX_set_options,_SSL_session_reused。如果源代码中的方法名称与上面列出的专用Apple API匹配,则更改方法名称将有助于防止此应用程序在将来的提交中被标记。此外,请注意,上述一个或多个API可能位于应用程序附带的静态库中。如果是这样,则必须将其移除。有关更多信息,请访问技术支持信息:http://developer.apple.com/support/technical/此致,App Store团队

这是从React native 0.55移植的旧版项目,具有以下依赖项:

"@react-native-community/async-storage": "1.9.0",
"@react-native-community/cli-debugger-ui": "3.0.0",
"@react-native-community/masked-view": "0.1.10",
"@react-native-community/push-notification-ios": "1.10.1",
"@react-navigation/bottom-tabs": "5.4.2",
"@react-navigation/native": "5.3.0",
"@react-navigation/stack": "5.3.3",
"@voximplant/react-native-foreground-service": "3.0.2",
"create-react-class": "^15.7.0",
"crypto-js": "^3.1.9-1",
"moment": "2.17.1",
"patch-package": "6.2.2",
"react": "17.0.2",
"react-native": "0.68.5",
"react-native-ble-manager": "8.4.3",
"react-native-code-push": "6.2.0",
"react-native-config": "^1.2.1",
"react-native-device-info": "5.5.5",
"react-native-exception-handler": "2.10.8",
"react-native-gesture-handler": "1.10.3",
"react-native-htmlview": "0.15.0",
"react-native-linear-gradient": "2.5.6",
"react-native-localize": "1.4.0",
"react-native-push-notification": "8.1.1",
"react-native-reanimated": "1.8.0",
"react-native-restart": "0.0.15",
"react-native-rss-parser": "1.4.0",
"react-native-safe-area-context": "^1.0.0",
"react-native-screens": "2.7.0",
"react-native-splash-screen": "3.2.0",
"react-native-svg": "12.1.0",
"react-native-swiper": "1.6.0",
"react-native-vector-icons": "6.6.0",
"realm": "10.24.0"

我的播客文件是:

require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

platform :ios, '11.0'

target 'targetname' do
  config = use_native_modules!

  use_react_native!(
    :path => config[:reactNativePath],
    # to enable hermes on iOS, change `false` to `true` and then install pods
    :hermes_enabled => false
  )

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable the next line.
  use_flipper!()

  post_install do |installer|
    react_native_post_install(installer)
    __apply_Xcode_12_5_M1_post_install_workaround(installer)
  end
end

我尝试清除XCode,但归档文件使用发布配置。
如何找到导致此错误的软件包?

s4chpxco

s4chpxco1#

我找到了一个解决办法。简而言之:我的快速修复是从我的podfile中删除use_flipper!。
我把整个方法描述一下,也许我能帮助到有类似问题的人家。
1.我在每个文件中搜索了“SSL_CTX_set_options”。它是在iOS/Pods下的OpenSSL-通用中定义的。这意味着我的Podfile安装了OpenSSL-通用。
1.检查了我的Podfile,它包含两个require_relative语句,我检查了他们的目标。ó的任何与SSL相关的东西。

  1. node_modules/react-native/scripts/react_native_pods包含了use_flipper!函数的定义(这是从我的podfile中调用的),它安装了OpenSSL通用版。这就是造成混乱的原因。
    flipper用于调试,因此在调试模式下调用use_flipper!函数会更好。
    在此之后,我仍然得到了一个警告在上传我的存档:
    应用程序引用Payload/ www.example.com中的非公共选择器AppName.app/AppName:getAuthorizationStatus:,isPassthrough,onSuccess:,removeValuesForKeys:completion:
    上传的存档可以通过Testflight进行测试(我认为它也可以上传到AppStore)。我没有尝试修复这个问题,但您可以在此链接中找到更多信息:The app references non-public selectors ins Payload/App.app/App...

相关问题