"Undefined symbols for architecture arm64" Unity FB SDK 更新后出现


  • Unity Version: 2020.3.25f1
  • XCode版本:13.2.1
  • Unity FB SDK:从11迁移。+到14.0.0

在拒绝更新Facebook Unity SDK后,由于13.2引入的编辑器/ide相关问题,正在努力更新到Unity Facebook SDK版本14.0.0。在解决了符合FB更新的标准问题(包括FB设置中的客户端令牌,并将dll设置为正确的构建架构)之后,我已经能够构建webgl和android而没有问题,但遇到了iOS构建失败。

Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_ACAccountStore", referenced from:
objc-class-ref in Util.o
"_ACFacebookAppIdKey", referenced from:
_Util_getNativeFBPermissionStatus in Util.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

阅读各种其他问题,遇到类似的架构未定义符号,让我认为我可能在链接器设置中缺少一些东西,或者可能缺少我需要引用的框架。最初我认为这是在归档过程中发生的事情,但当试图构建xcode项目时,同样的错误显示。pod文件成功构建并解决了任何问题,所以xcode工作区正在构建中。

编辑:添加更多的信息,我已经做了dll导入设置解决方案建议。

解决方法:https://github.com/facebook/facebook-sdk-for-unity/wiki/FAQ---Troubleshooting-Unity-SDK-14.0.0

你的问题是"问题2:dll配置错误"——为了完整起见,下面是完整的解决方案。我把拼写错误和语法错误留在下面,只是为了强调这些家伙有多马虎。

"解决方案:

这是Unity中dll配置错误的指示。当Unity SDK导入Unity时,不幸的是,Unity将所有dll重新配置为"所有平台",这导致在特定平台上构建时出现问题。解决这个问题的方法是重新配置dll。你可以在FacebookSDK下的Unity中找到它们。插件和所有dll都在不同的平台文件夹下,如Android/Canvas/Editor/iOS等。点击它们,将出现一个检查器(附截图)。附带的示例显示了Android dll的配置。取消选中所有平台(如果需要)并选择Android。对其余部分执行同样的操作:

Android. dll到Android平台IOS Dll到IOS平台

编辑:如下面所述,如果你不是在Windows(或任何其他平台)上构建,只需删除这些文件夹。无论如何,如果你想让你的构建在移动设备上工作,你将不得不删除Windows x86文件夹。

从过去从事此项目的工程师那里获得一些输入后,设法发现缺失的符号与一些不再支持的旧FB代码有关,并且它不再被我们的应用程序使用。因此,能够干净地删除旧代码并解决构建问题。事情似乎在按计划进行。为了可见性,我们有一个内部类,使用一些外部方法来连接我们的应用代码和平台相关的本地代码。iOS有一个方法getNativeFBPermissionStatus,它是Util的一部分。m类。

最新更新