无法识别的选择器发送到来自Facebook SDK的类



大约一年前,我在iOS应用程序中安装了Facebook SDK,仅用于广告跟踪。我在应用程序中调用的唯一SDK调用是它们告诉你放入应用程序委托中的三个调用。没有任何问题,我的应用程序运行良好(广告跟踪有效(。

最近Facebook发了一封电子邮件,要求我更新SDK,我照做了。现在,我的应用程序在启动几秒钟后崩溃,并出现一系列"发送到类的未识别选择器"错误。

由于我没有Facebook的源代码,我没有办法调试它,不知道它来自哪里,除了从我的应用程序中完全删除SDK之外,我没有其他真正的选择,这会让我的营销人员非常不安。

这个问题是什么?有人找到解决办法了吗?

在构建设置中,是否为"其他链接器标志"设置了-ObjC

这为我解决了问题。

此外,如果你没有使用CocoaPods,你可以查看podspec,并尝试确保你已经链接了所需的依赖项。

具体而言:

"ios": {
"weak_frameworks": [
"Accounts",
"CoreLocation",
"Social",
"Security",
"QuartzCore",
"CoreGraphics",
"UIKit",
"Foundation",
"AudioToolbox",
"WebKit"
]
},

请参阅RN FBK SDK iOS第472期和RN Unity SDK第208期也报告了类似的崩溃。

对我来说,添加-OjC链接器标志不足以防止崩溃。

我还必须包含force_load标志和FBSDKLoginKit框架的正确路径。

因此,在项目中的其他链接标志XCode中的构建设置中添加:

-ObjC
-force_load
-${PROJECT_DIR}/FacebookSDK/FBSDKCoreKit.framework/FBSDKCoreKit

请注意,通往FBSDKCoreKit框架的路径可能不同。

在上面链接的Github问题中有更多关于此次崩溃原因的详细信息。

最新更新