ReactNative 0.59.8 项目 - 在应用商店发布时无法为 iOS 存档

Posted

技术标签:

【中文标题】ReactNative 0.59.8 项目 - 在应用商店发布时无法为 iOS 存档【英文标题】:ReactNative 0.59.8 project - unable to archive for for iOS while app store release 【发布时间】:2019-08-14 06:12:00 【问题描述】:

我们最近升级了 ReactNative App 中的所有库,我们正在使用 RN v0.59.8 和 XCode v 10.3 (10G8),一切正常,我们能够通过开发构建和运行应用程序证书,甚至是带有 Adhoc 配置文件的分发证书。

但是,当我们尝试提交到应用商店时,存档后,该应用始终列在“其他项目”下,而不是“ios 应用”下。存档的类型总是显示为通用 Xcode 存档,这是错误的。

当我们检查为什么验证和上传到应用商店按钮被禁用时,我们发现apple technical document

根据文档中给出的建议,我们遵循以下步骤:

    对于构建设置下的所有静态库,请跳过安装否 将所有头文件从 Headers 构建阶段移动到 Copy files 构建阶段

第二步有点繁琐,因为我们必须手动为所有静态库做。

这样做之后,我们开始收到大量编译错误,例如 NativeModule.h 中 MethodDescriptor 的重定义

查看错误 ->

此类错误有 600 多个。 请帮我解决这个问题

这是我的 Pod 文件

 # Uncomment the next line to define a global platform for your project
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
#use_frameworks!
target 'SociallyGood' do
  # this is very important to have!
  rn_path = '../node_modules/react-native'
  rn_maps_path = '../node_modules/react-native-maps'
  pod 'yoga', path: "#rn_path/ReactCommon/yoga/yoga.podspec"
  pod 'React', path: rn_path, subspecs: [
    'ART',
    'Core',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket',
    'DevSupport'
  ]
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!
  # pod 'GoogleMaps'  # <~~ remove this line if you do not want to support GoogleMaps on iOS
  # Pods for SociallyGood

  pod 'react-native-maps', path: rn_maps_path
  pod 'react-native-google-maps', path: rn_maps_path  # If you need GoogleMaps support on iOS
  # pod 'GoogleAppMeasurement', '5.4'

  pod 'RNImageCropPicker', :path =>  '../node_modules/react-native-image-crop-picker'
  pod 'BVLinearGradient', :path => '../node_modules/react-native-linear-gradient'

  pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'
  pod 'RNShare', :path => '../node_modules/react-native-share'

  pod 'react-native-splash-screen', :path => '../node_modules/react-native-splash-screen'

  pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'

  pod 'GoogleSignIn', '~> 4.4.0'
  # pod 'GoogleUtilities', '~> 1.3'
  # pod 'GoogleAuthUtilities'
  # pod 'GoogleAppUtilities'
  pod 'FacebookSDK'
  pod 'FBSDKCoreKit', '~> 4.40.0'
  pod 'FBSDKLoginKit', '~> 4.40.0'
  pod 'FBSDKShareKit', '~> 4.40.0'

  # Required by RNFirebase
  pod 'Firebase/Core', '~> 5.20.2'
  pod 'Firebase/Auth', '~> 5.20.2'

  # very important to have, unless you removed React dependencies for Libraries 
  # and you rely on Cocoapods to manage it
  # pod 'RNGoogleSignin', :path => '../node_modules/react-native-google-signin'

  pod 'BugsnagReactNative', :path => '../node_modules/bugsnag-react-native'

  # pod 'react-native-maps', :path => '../node_modules/react-native-maps'

  # pod 'react-native-fbsdk', :path => '../node_modules/react-native-fbsdk'

  pod 'RNScreens', :path => '../node_modules/react-native-screens'

  pod 'react-native-webview', :path => '../node_modules/react-native-webview'

  post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "React"
      target.remove_from_project
    end
  end
end

end

【问题讨论】:

只是一个问题。您是否已将 Xcode 更新到最新版本? @Shripada 是的。更新了...我有 XCode v 10.3 你能用你的 podfile 更新问题吗? @GokulKulkarni 更新了我的问题中的 pod 文件详细信息 react-native-vector-icons 的版本是多少?它必须大于 4 【参考方案1】:

在尝试将我的第一个 RN 应用程序发布到应用商店时,我也遇到了同样的困难。我的存档版本总是列在“其他项目”下

我花了一段时间才找到答案,但这就是我现在要做的:

还有另一种方法可以将您的应用构建上传到应用商店:创建应用的 .ipa 文件,然后通过 Xcode 中的 Application Loader 上传。

我不记得我找到的所有帮助我解决这个问题的资源,但这是其中之一:How to build .ipa application for react-native-ios?

基本上,在您执行 Clean Build FolderBuild 之后,您会在以下位置找到 .app 文件: ~/Library/Developer/Xcode/DerivedData//Build/Products/Release-iphoneos/

在您的桌面上创建一个名为 Payload 的新文件夹(此名称区分大小写)

复制您的 .app 文件并将副本粘贴到此 Payload 文件夹中。

右键单击文件夹并选择“压缩有效负载”

保存时,不要使用 .zip 扩展名保存,而是使用 .ipa 扩展名保存。

现在这是您应用的 .ipa 文件,您可以通过 Xcode Application Loader 上传此文件。

上传过程会告诉您您的构建是否有任何问题,但如果没有,它将上传到应用商店,您应该可以在稍后在 App Store Connect 中找到它。

希望这对您和/或其他人有所帮助!

【讨论】:

以上是关于ReactNative 0.59.8 项目 - 在应用商店发布时无法为 iOS 存档的主要内容,如果未能解决你的问题,请参考以下文章

ReactNative: ReactNative初始项目的结构

封装iOS原生资源库link到项目供ReactNative使用

ReactNative FlatList 一次渲染所有项目?

基于Redux的ReactNative项目开发总结

iOS开发嵌套ReactNative页面

原生iOS项目导入ReactNative,各种问题