未找到体系结构arm 64- XCode的符号

eivgtgni  于 2022-11-18  发布在  其他
关注(0)|答案(5)|浏览(181)

我试图在Mac Intel上构建我的react原生项目,但不断收到下一个错误:

Showing All Messages
Undefined symbol: _swift_stdlib_isStackAllocationSafe

未定义的建筑符号arm 64:“_swift_stdlib_isStackAllocationSafe”,引用自:函数签名专用化〈Arg[0] = [闭包传播:闭包#1(__C.SKProduct)-〉闭包#2(Swift.Set)中的Swift.<__C.SKProduct>布尔值-〉()在购买核心Swift.引入资格计算器.检查试用或引入价格资格(具有:基础数据、产品标识符:迅捷.集<Swift.String>,完成度:(Swift.字典〈Swift.字符串,__C.NSNumber〉,Swift.可选<Swift.Error>)-〉())-〉(),参数类型:在<Swift.String><__C.SKProduct>libPurchasesCoreSwift.a(IntroEligibilityCalculator.o)中的Swift._NativeSet.filter((A)抛出-〉Swift.布尔)抛出-〉Swift._NativeSet的泛型特化的集合:找不到体系结构arm 64的符号clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我试过几乎所有的答案:链接。

pod deintegrate 
pod install
pod repo update

我的React原生版本:

"react-native": "0.64.2"

我的项目的体系结构:

带库

的链接二进制文件

UPDATE我还将react原生版本更新为0.67.4,但仍然无法正常工作。

4uqofj5v

4uqofj5v1#

对于React性原生0.67+:经过大量的研究,我从Vegaro找到了下一个解决方案:
SOLUTION LINK
第一步是升级react-native-purchases by Revenuecat软件包至最新版本。
清洁移液器:REFERENCE LINK TO PROPERLY CLEAN PODS
声明pod安装后流程:将旁边的添加到您的播客文件:

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

def fix_library_search_paths(installer)
  def fix_config(config)
    lib_search_paths = config.build_settings["LIBRARY_SEARCH_PATHS"]
    if lib_search_paths
      if lib_search_paths.include?("$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)") || lib_search_paths.include?("\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"")
        # $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) causes problem with Xcode 12.5 + arm64 (Apple M1)
        # since the libraries there are only built for x86_64 and i386.
        lib_search_paths.delete("$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)")
        lib_search_paths.delete("\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"")
        if !(lib_search_paths.include?("$(SDKROOT)/usr/lib/swift") || lib_search_paths.include?("\"$(SDKROOT)/usr/lib/swift\""))
          # however, $(SDKROOT)/usr/lib/swift is required, at least if user is not running CocoaPods 1.11
          lib_search_paths.insert(0, "$(SDKROOT)/usr/lib/swift")
        end
      end
    end
  end

  projects = installer.aggregate_targets
    .map{ |t| t.user_project }
    .uniq{ |p| p.path }
    .push(installer.pods_project)

  projects.each do |project|
    project.build_configurations.each do |config|
      fix_config(config)
    end
    project.native_targets.each do |target|
      target.build_configurations.each do |config|
        fix_config(config)
      end
    end
    project.save()
  end
end

最后,手动更改项目中的库搜索路径(XCode)。

$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)

加:

$(SDKROOT)/usr/lib/swift

清理项目并运行:“存档”重新建立。

6xfqseft

6xfqseft2#

我在我的M1 Mac上也遇到了类似的问题,下面是我解决这个问题的方法:

  1. brew install watchman
    如果没有节点=〉brew install node
  2. sudo arch -x86_64 gem install ffi
    1.在ios文件夹中的pod文件末尾添加以下代码:
post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings["ONLY_ACTIVE_ARCH"] = "NO"
      end
    end
  end
  1. cd ios/ && arch -x86_64 pod install .
    1.使用Rosetta运行Xcode。
    x1c 0d1x。
    您可以通过运行以下命令来安装Rosetta:softwareupdate --install-rosetta
    1.不包括体系结构arm64.

1.清除构建-打开xcode,然后按Command + Shift + K
1.如果您使用的是nvm,请尝试将NODE_BINARY=node替换为which node命令的实际结果,在我的示例中,该结果类似于:

喊出这些答案:三个

cgvd09ve

cgvd09ve3#

作为一个变通办法,降级到Xcode 13. 2. 1对我来说很有效。在这个版本上一切都很好。
但在版本13.3中-我遇到了这个问题

vs3odd8k

vs3odd8k4#

如果可行,请更新React Native版本。版本0.67修复了此问题。
如果无法选择更新,最简单的解决方案是更新Library Search Path。
在Xcode中选择您的项目,然后前往“构件设置”。向下滚动直到您看到“搜索路径”,最后看到“资源库搜索路径”。将"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"替换为"$(SDKROOT)/usr/lib/swift"

这个解决方案的功劳要归功于Vegaro,他发布了HERE沿着如果这个解决方案对你不起作用的话,我认为这是一个更具侵入性的选择。

rsl1atfo

rsl1atfo5#

当我将xcode升级到14. 1时,它对我很有效。

相关问题