ios - BlackBerry Dynamics SDK for iOS v. 8.1.0.37 和 Firebase 分析使 iOS 14 上的应用程序崩溃
问题描述
我们已将 BlackBerry Dynamics SDK 集成到我们的 iOS 应用程序中,该应用程序也使用 Firebase 分析。在运行 iOS 12/13 的设备上一切正常,但在运行 iOS 14 的设备上,应用程序在初始化 Firebase 时崩溃。
黑莓授权正常,一旦用户获得授权,就会执行初始化 Firebase 的代码并发生崩溃。
BlackBerry Dynamics SDK 版本是 8.1.0.37,我们使用的是动态库而不是静态库。
BlackBerry Dynamics 文档说明如下:
SDK 版本 8.1 需要支持 iOS 14 上的应用程序的 FirebaseCore。FirebaseCore 与 iOS 14 上的 SDK 版本 8.0 或更低版本不兼容。如果应用程序不使用 FirebaseCore pod,则应将其删除。
这是调用堆栈:
#0 __exceptionPreprocess ()
#1 objc_exception_throw ()
#2 -[NSProxy methodSignatureForSelector:] ()
#3 ___forwarding___ ()
#4 _CF_forwarding_prep_0 ()
#5 +[ACSubclasser wrapObjectIntoSubclass:] ()
#6 +[NSURLSession(ACURLProtocol) ac_rawSessionWithConfiguration:delegate:delegateQueue:] ()
#7 +[NSURLSession(ACURLProtocol) miac_sessionWithConfiguration:delegate:delegateQueue:] ()
#8 ___lldb_unnamed_symbol9442$$BlackBerryDynamics ()
#9 ___lldb_unnamed_symbol9444$$BlackBerryDynamics ()
#10 -[FIRInstallationsAPIService initWithAPIKey:projectID:]
#11 -[FIRInstallationsIDController initWithGoogleAppID:appName:APIKey:projectID:GCMSenderID:accessGroup:]
#12 -[FIRInstallations initWitAppOptions:appName:]
#13 -[FIRInstallations initWithApp:]
#14 __40+[FIRInstallations componentsToRegister]_block_invoke
#15 -[FIRComponentContainer instantiateInstanceForProtocol:withBlock:]
#16 -[FIRComponentContainer instanceForProtocol:]
#17 +[FIRComponentType instanceForProtocol:inContainer:]
#18 +[FIRInstallations installationsWithApp:]
#19 +[FIRInstallations installations]
#20 +[FIRAnalytics updateFirebaseInstallationID] ()
#21 +[FIRAnalytics startWithConfiguration:options:] ()
#22 -[FIRApp configureCore]
#23 +[FIRApp addAppToAppDictionary:]
#24 +[FIRApp configureWithName:options:]
#25 +[FIRApp configureWithOptions:]
#26 +[FIRApp configure]
#27 -[MFAppDelegate finalizeApplicationLaunch]
#28 -[MFAppGDDelegate didAuthorize]
#29 -[MFAppGDDelegate onAuthorized:]
#30 -[MFAppGDDelegate handleEvent:]
#31 __NSThreadPerformPerform ()
#32 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#33 __CFRunLoopDoSource0 ()
#34 __CFRunLoopDoSources0 ()
#35 __CFRunLoopRun ()
#36 CFRunLoopRunSpecific ()
#37 GSEventRunModal ()
#38 -[UIApplication _run] ()
#39 UIApplicationMain ()
#40 main
#41 start ()
这是打印到控制台的内容:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSProxy methodSignatureForSelector:] called!'
*** First throw call stack:
(0x1a619d114 0x1b99c3cb4 0x1a745f3f8 0x1a619f2e4 0x1a61a16cc 0x1103d3540 0x11036960c 0x110369320 0x1042370f8 0x104237680 0x100e83ed4 0x100e896e8 0x100e825d4 0x100e82428 0x100e82320 0x100e35a50 0x100e35cd8 0x100e36358 0x100e82dd0 0x100e82d08 0x1015c3f84 0x1015c3eb0 0x100e30e74 0x100e309d4 0x100e2fd54 0x100e2f778 0x100e2f6cc 0x10087eeec 0x100b5e7a8 0x100b5eaf0 0x100b5e6ac 0x1a747cda0 0x1a611d240 0x1a611d140 0x1a611c488 0x1a6116a40 0x1a6116200 0x1bc211598 0x1a89dc004 0x1a89e15d8 0x1008a228c 0x1a5df5598)
libc++abi.dylib: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSProxy methodSignatureForSelector:] called!'
terminating with uncaught exception of type NSException
有谁知道是否有办法解决这个问题?
解决方案
我们发现只有当 MobileIron 的 AppConnect SDK 也链接到应用程序时才会发生崩溃。
因此,我们能够通过从我们的应用程序的 BlackBerry Dynamics 版本中删除 AppConnect SDK 来解决该问题。
推荐阅读
- mysql - 如何保持我的“有效期”行始终相对于“到期日期”行进行更新?
- c - 嵌套类字符串结构中的嵌入与指针
- r - ggplot中的箱线图与来自不同数据的geom_line
- r - 如何将数据集表转换为R中的矩阵
- imagemagick - 如何在 imagemagick 的一个命令中组合一个调整大小和 3 个复合命令?
- mysql - 在承诺链中停止另一个 .then() 执行
- html - 将向上/向下箭头添加到引导手风琴
- excel - 使用一个自动电子邮件 vba 代码,允许双击两个单元格并通过电子邮件发送不同的范围
- c++ - Make, Endpoints 因预编译器标志而异
- php - 如何从另一个文件访问位于静态函数内的变量?