在 macOS Big Sur 上安装 React Native 时出现“未定义符号:Swift.ExpressibleByFloatLiteral 的协议描述符”问题

问题描述 投票:0回答:9

我试图在我的系统上安装 React Native,发现它无法安装该模板错误所需的 CocoaPods 依赖项。

sudo arch -x86_64 gem install ffi
解决了这个问题,但最终出现了
event-config.h" file not found
错误。

我将 pod 文件中的 Flipper 版本更改为

use_flipper!({'Flipper'=>'0.76.0'})
,然后出现上述错误。任何有关此问题的帮助将不胜感激。

node version : 15.10.0
react-native version: 0.63.4
Xcode version: 12.4

错误描述如下:

Showing Recent Messages

Could not find or use auto-linked library 'swiftCoreGraphics'
Could not find or use auto-linked library 'swiftUIKit'
Could not find or use auto-linked library 'swiftDarwin'
Could not find or use auto-linked library 'swiftFoundation'
Could not find or use auto-linked library 'swiftMetal'
Could not find or use auto-linked library 'swiftObjectiveC'
Could not find or use auto-linked library 'swiftCoreFoundation'
Could not find or use auto-linked library 'swiftDispatch'
Could not find or use auto-linked library 'swiftCoreImage'
Could not find or use auto-linked library 'swiftQuartzCore'
Could not find or use auto-linked library 'swiftCore'
Could not find or use auto-linked library 'swiftSwiftOnoneSupport'
Undefined symbol: protocol descriptor for Swift.ExpressibleByFloatLiteral
Undefined symbol: associated type descriptor for Swift.ExpressibleByIntegerLiteral.IntegerLiteralType

Undefined symbol: associated conformance descriptor for Swift.ExpressibleByIntegerLiteral.Swift.ExpressibleByIntegerLiteral.IntegerLiteralType: Swift._ExpressibleByBuiltinIntegerLiteral

Undefined symbol: method descriptor for Swift.ExpressibleByFloatLiteral.init(floatLiteral: A.FloatLiteralType) -> A

Undefined symbol: protocol descriptor for Swift.ExpressibleByIntegerLiteral
Undefined symbol: value witness table for Builtin.Int32
Undefined symbol: __swift_FORCE_LOAD_$_swiftCoreImage
Undefined symbol: associated type descriptor for Swift.ExpressibleByFloatLiteral.FloatLiteralType
Undefined symbol: __swift_FORCE_LOAD_$_swiftQuartzCore
Undefined symbol: __swift_FORCE_LOAD_$_swiftDispatch
Undefined symbol: method descriptor for Swift.ExpressibleByIntegerLiteral.init(integerLiteral: A.IntegerLiteralType) -> A
Undefined symbol: __swift_FORCE_LOAD_$_swiftCoreFoundation
Undefined symbol: protocol witness table for Swift.Int : Swift._ExpressibleByBuiltinIntegerLiteral in Swift
Undefined symbol: __swift_FORCE_LOAD_$_swiftObjectiveC
Undefined symbol: __swift_FORCE_LOAD_$_swiftCoreGraphics
Undefined symbol: _swift_getForeignTypeMetadata
Undefined symbol: __swift_FORCE_LOAD_$_swiftFoundation
Undefined symbol: associated conformance descriptor for Swift.ExpressibleByFloatLiteral.Swift.ExpressibleByFloatLiteral.FloatLiteralType: Swift._ExpressibleByBuiltinFloatLiteral
Undefined symbol: __swift_FORCE_LOAD_$_swiftUIKit
Undefined symbol: __swift_FORCE_LOAD_$_swiftMetal
Undefined symbol: Swift.Float.init(Swift.Double) -> Swift.Float
Undefined symbol: __swift_FORCE_LOAD_$_swiftDarwin
Undefined symbol: protocol witness table for Swift.Float : Swift._ExpressibleByBuiltinFloatLiteral in Swift
ios swift xcode react-native react-native-ios
9个回答
54
投票

如果您使用的是 M1 mac,则需要排除架构 arm64。 Please check this image

还要在 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

执行 pod install,清理构建文件夹并重新启动构建,这将解决问题。

更新:对于 xCode 13 使用以下配置: 如果你面对

Command PhaseScriptExecution failed with a nonzero exit code in react native xcode 13

Command PhaseScriptExecution failed with a nonzero exit code in react native xcode 13


7
投票

真正对我有用的,只需添加此排除架构,就可以了,当然,如果您使用的是带有 M1 的 Mac

enter image description here


2
投票

我通过向 Xcode 中的项目添加一个空的 swift 文件来解决这个问题。这具有创建桥接头文件的副作用,该文件(至少对我来说)让我的项目得以编译。


2
投票

如果您使用的是 m1 Mac

  • 在iOS文件夹中运行
    arch -x86_64 pod install
  • 使用 Rosetta 运行 Xcode
  • 干净的构建
  • 再次奔跑

1
投票

最终对我有用的是从 Xcode 中删除 LIBRARY_SEARCH_PATHS...

https://github.com/facebook/react-native/issues/31438#issuecomment-865180401


0
投票

使用 Dipan Sharma 解决方案时,我无法再为设备或“任何 iOS 设备”构建。对我来说解决这个问题的方法只是将arm64排除在“任何iOS模拟器SDK”之外,而不是在上层排除它。即使从排除的架构的上层删除arm64,也没有为设备和“任何iOS设备”再次构建项目。不得不从我的 git 中提取一个旧的项目文件。 在 Apple Silicon M1 上使用“排除架构”设置


0
投票

Dipan 的出色答案最初是有效的,但后来由于我无法控制的力量,我不得不更新一堆 React 库,但它不再有效。

最终我通过删除two

的引用解决了这个问题
"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\""

<my project name>.xcodeproj/project.pbxproj
文件中。然后我再次运行我的项目,它完成了最后几个文件。

注意:为了充分披露,我不知道此更改会产生什么后果


0
投票

我遇到错误未定义符号:CoreGraphics.CGFloat 的标称类型描述符。

反应本机:63.3 Xcode:v 16 MacOC:15.0.1 (24A348)。

解决方案适合我:在“构建阶段”->“链接二进制文件与库”的目标中,添加 libswiftCoreGraphics.tbd。


-2
投票

这是因为您的项目包含 Swift 和 Objective c 的框架/库。

添加一个 swift 文件(如果您看到项目中已有 Objective C 文件)或 Objective C 文件(如果您看到项目中已有 Objective C 文件)。选择出现上述错误的目标。

此步骤将要求创建桥接头。创建桥接标头 说是并编译并运行。

© www.soinside.com 2019 - 2024. All rights reserved.