Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios React本机XCode项目产品存档失败,架构arm64的符号重复_Ios_Xcode_React Native_Cocoapods - Fatal编程技术网

Ios React本机XCode项目产品存档失败,架构arm64的符号重复

Ios React本机XCode项目产品存档失败,架构arm64的符号重复,ios,xcode,react-native,cocoapods,Ios,Xcode,React Native,Cocoapods,奇怪的是,我似乎无法让归档在XCode中工作,但是如果我不尝试归档,而只是构建一个发布版本,那么构建成功,并且没有重复符号上的错误。该项目也正确地构建在设备上 我已经搜索了这个主题,并尝试禁用可测试性,并将项目设置中的“No Common Block”设置为No,但到目前为止运气不佳 该项目是一个基于React Native 0.40的项目,还安装了CocoaPods。这是什么文件 # You Podfile should look similar to this file. React Nat

奇怪的是,我似乎无法让归档在XCode中工作,但是如果我不尝试归档,而只是构建一个发布版本,那么构建成功,并且没有重复符号上的错误。该项目也正确地构建在设备上

我已经搜索了这个主题,并尝试禁用可测试性,并将项目设置中的“No Common Block”设置为No,但到目前为止运气不佳

该项目是一个基于React Native 0.40的项目,还安装了CocoaPods。这是什么文件

# You Podfile should look similar to this file. React Native currently does not support use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

# Change 'AirMapsExplorer' to match the target in your Xcode project.
target 'StreetSmart' do
  pod 'React', path: '../node_modules/react-native', :subspecs => [
    'Core',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket'
  ]

  pod 'GoogleMaps'  # <~~ remove this line if you do not want to support GoogleMaps on iOS

# when not using frameworks  we can do this instead of including the source files in our project (1/4):
#  pod 'react-native-maps', path: '../../'
#  pod 'react-native-google-maps', path: '../../'  # <~~ if you need GoogleMaps support on iOS
end
#您的文件应该与此文件类似。React Native当前不支持使用\u框架!
来源'https://github.com/CocoaPods/Specs.git'
平台:ios,“8.0”
#更改“AirMapsExplorer”以匹配Xcode项目中的目标。
目标是“街机智能”吗
pod“React”,路径:“../node_modules/React native”,:subsecs=>[
“核心”,
“RCTActionSheet”,
“RCTAnimation”,
“RCTGeolocation”,
“RCTImage”,
“RCTLinkingIOS”,
“RCT网络”,
“RCT设置”,
“RCTText”,
“RCTVibration”,
“RCTWebSocket”
]

pod“GoogleMaps”#在另一个react本地项目中找到相关问题后,最终解决了问题

答案是Xcode项目中有两个React Native副本,一个来自CocoaPods,另一个作为子项目。只需删除Xcode中
下Podfile中已声明的所有模块,清除并重试后错误就会消失

这个问题的有趣之处在于,调试和发布中的所有构建都可以工作,但在尝试归档项目以进行分发时失败

[2017年5月2日更新]

当您使用
react native run ios/android
运行代码时,上述解决方案可能会导致调试时错误,尽管它允许成功归档项目

另一种方法是从
Podfile
声明而不是从
文件夹中删除既存在于
中又存在于
Podfile
中的那些重复模块。当然,运行相关的pod命令,清理项目等等


这样做可以使我的代码存档并在没有调试时错误的情况下运行

,因此我对此做了更多的研究,而解决方法实际上要简单得多。至少对我来说是这样。问题是,当您在pod文件中声明React时,Pods xcodeproject会在
pod安装过程中获得一个React目标。在Pods项目中有这个目标是导致归档时出错的原因。因此,解决方法是移除目标

在xCode中删除目标的问题在于,这实际上是在Pods文件夹中编辑project.pbxproj文件,该文件夹不在版本控制中。因此,尽管构建将在您完成此操作后存档,但如果您从手动删除它的计算机以外的任何位置部署,它仍将失败。因此,解决方案是将此安装后命令添加到pod文件的底部:

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

这只是在所有要安装的pod中循环,并删除React-one的目标。这样,构建项目的任何地方都将删除目标。现在,当您构建归档时,它不会失败。

我通过以下方法解决了这个问题: (参考文献:)

  • 打开Xcode>Pods>Targets支持文件>Pods-{TARGET-NAME}查找 “其他标志”和仅删除这两个文件中的
    -ObjC
  • Pods-{TARGET-NAME}.release.xcconfig
    e
    Pods-{TARGET-NAME}.debug.xcconfig

  • 转到项目主目标>构建 设置>其他链接器标志:确保没有
    -ObjC
    保留在 值我删除了ios中的生成/生成文件夹,并再次运行您的项目 现在可以了

    上面链接的副作用:应用程序可能会变大,因为其中可能有重复的符号


    希望它能对您有所帮助。

    开发的包含和/或库路径与发行版相同吗?不太清楚您的意思。。。在发布模式下构建应用程序并在设备上运行它,我没有任何问题。存档使用发布版本配置,但只有存档失败并出现这些错误。这也是我的想法,但是当我从项目文件夹中删除库时,当项目构建良好时,在调试时,我有一个
    本机模块不能为null
    错误。你也遇到过这个吗?我现在被困在这个问题上,目前有400多个重复符号。。。我不能存档我的项目,我需要在这个周末发布一个版本。我混合使用libarries和pod,我不确定这是否导致了我的库重叠。我已经运行了
    pod deintegrate&&pod install
    duplicate symbol\u OBJC\u元类\u$\u RCTWebSocketModule
    我花了好几个小时跟踪这件事。所有其他选项都会导致“归档”或“运行”被破坏。我花了很长时间才找到为什么React要建两次,但最后,这解决了问题。谢谢@stueynet@Pinguinderk真棒!很高兴听你这么说。我把你的建议代码放在了podfile的最底层,但是我运行了“archive”,它仍然给出了同样的错误,我应该运行pod安装吗?你是我的救星。几个月来我一直在努力解决这个问题,它节省了我的时间。伟大的谢谢。我必须在建筑完成后做一次清理,然后才能成功存档。谢谢你能再解释一下你的架构吗?你在使用哪个图书馆(除了React)?您是如何通过cocoapods(Podfile)安装这些libs的?