【问题标题】:+[FIRAnalytics setAnalyticsCollectionEnabled:]: unrecognized selector sent to class+[FIRAnalytics setAnalyticsCollectionEnabled:]: 无法识别的选择器发送到类
【发布时间】:2019-10-08 09:25:19
【问题描述】:

我正在将 React Native 从 RN0.59.10 升级到 RN0.60.0(使用 Podfile)

从我的包管理器中,安装了 5.5.6 版 "react-native-firebase": "^5.5.6",

这是我的 Podfile 中的内容 pod 'RNFirebase', :path => '../node_modules/react-native-firebase/ios'

=====================

我成功地构建了项目,但是在运行时(应用启动时)遇到了以下问题

+[FIRAnalytics setAnalyticsCollectionEnabled:]: unrecognized selector sent to class 0x10377e400

以下在模拟器和物理设备上进行了尝试

  1. 尝试遵循here的一些解决方案

  2. 在我的项目的构建阶段下删除并重新附加 firebase 框架

    • FIRAnalyticsConnector.framework

应用程序在 RNFirebase.xcodeproj > analytics > RNFirebaseAnalytics.m > RCT_EXPORT_METHOD 中的以下方法崩溃

RCT_EXPORT_METHOD(setAnalyticsCollectionEnabled:(BOOL) enabled) {
  [FIRAnalytics setAnalyticsCollectionEnabled:enabled];
}

这是我从 xCode 获得的完整崩溃日志

2019-10-08 17:05:37.413335+0800 testApp[350:50876] +[FIRAnalytics setAnalyticsCollectionEnabled:]: unrecognized selector sent to class 0x10377e400
2019-10-08 17:05:37.430 [fatal][tid:com.facebook.react.RNFirebaseAnalyticsQueue] Exception '+[FIRAnalytics setAnalyticsCollectionEnabled:]: unrecognized selector sent to class 0x10377e400' was thrown while invoking setAnalyticsCollectionEnabled on target RNFirebaseAnalytics with params (
    1
)
callstack: (
    0   CoreFoundation                      0x0000000225e18edc <redacted> + 252
    1   libobjc.A.dylib                     0x0000000224fe9a40 objc_exception_throw + 56
    2   CoreFoundation                      0x0000000225d36ccc <redacted> + 0
    3   CoreFoundation                      0x0000000225e1e7dc <redacted> + 1412
    4   CoreFoundation                      0x0000000225e2048c _CF_forwarding_prep_0 + 92
    5   testApp                  0x000000010313b418 -[RNFirebaseAnalytics setAnalyticsCollectionEnabled:] + 64
    6   CoreFoundation                      0x0000000225e20630 <redacted> + 144
    7   CoreFoundation                      0x0000000225cfe450 <redacted> + 292
    8   CoreFoundation                      0x0000000225cff034 <redacted> + 60
    9   testApp                  0x00000001031e9b6c -[RCTModuleMethod invokeWithBridge:module:arguments:] + 1896
    10  testApp                  0x00000001031ed568 _ZN8facebook5reactL11invokeInnerEP9RCTBridgeP13RCTModuleDatajRKN5folly7dynamicE + 660
    11  testApp                  0x00000001031ed0dc _ZZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEiENK3$_0clEv + 144
    12  testApp                  0x00000001031ed040 ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke + 28
    13  libdispatch.dylib                   0x0000000104657824 _dispatch_call_block_and_release + 24
    14  libdispatch.dylib                   0x0000000104658dc8 _dispatch_client_callout + 16
    15  libdispatch.dylib                   0x0000000104660e6c _dispatch_lane_serial_drain + 720
    16  libdispatch.dylib                   0x0000000104661b60 _dispatch_lane_invoke + 460
    17  libdispatch.dylib                   0x000000010466bbfc _dispatch_workloop_worker_thread + 1220
    18  libsystem_pthread.dylib             0x0000000225a350dc _pthread_wqthread + 312
    19  libsystem_pthread.dylib             0x0000000225a37cec start_wqthread + 4
)
2019-10-08 17:05:37.431276+0800 testApp[350:50876] Exception '+[FIRAnalytics setAnalyticsCollectionEnabled:]: unrecognized selector sent to class 0x10377e400' was thrown while invoking setAnalyticsCollectionEnabled on target RNFirebaseAnalytics with params (
    1
)
callstack: (
    0   CoreFoundation                      0x0000000225e18edc <redacted> + 252
    1   libobjc.A.dylib                     0x0000000224fe9a40 objc_exception_throw + 56
    2   CoreFoundation                      0x0000000225d36ccc <redacted> + 0
    3   CoreFoundation                      0x0000000225e1e7dc <redacted> + 1412
    4   CoreFoundation                      0x0000000225e2048c _CF_forwarding_prep_0 + 92
    5   testApp                  0x000000010313b418 -[RNFirebaseAnalytics setAnalyticsCollectionEnabled:] + 64
    6   CoreFoundation                      0x0000000225e20630 <redacted> + 144
    7   CoreFoundation                      0x0000000225cfe450 <redacted> + 292
    8   CoreFoundation                      0x0000000225cff034 <redacted> + 60
    9   testApp                  0x00000001031e9b6c -[RCTModuleMethod invokeWithBridge:module:arguments:] + 1896
    10  testApp                  0x00000001031ed568 _ZN8facebook5reactL11invokeInnerEP9RCTBridgeP13RCTModuleDatajRKN5folly7dynamicE + 660
    11  testApp                  0x00000001031ed0dc _ZZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEiENK3$_0clEv + 144
    12  testApp                  0x00000001031ed040 ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke + 28
    13  libdispatch.dylib                   0x0000000104657824 _dispatch_call_block_and_release + 24
    14  libdispatch.dylib                   0x0000000104658dc8 _dispatch_client_callout + 16
    15  libdispatch.dylib                   0x0000000104660e6c _dispatch_lane_serial_drain + 720
    16  libdispatch.dylib                   0x0000000104661b60 _dispatch_lane_invoke + 460
    17  libdispatch.dylib                   0x000000010466bbfc _dispatch_workloop_worker_thread + 1220
    18  libsystem_pthread.dylib             0x0000000225a350dc _pthread_wqthread + 312
    19  libsystem_pthread.dylib             0x0000000225a37cec start_wqthread + 4
)

我预计在发布期间不会出现任何崩溃问题。如果您在我实施的尝试/方式中发现任何问题,请分享。

谢谢。

【问题讨论】:

  • 您好,我使用的是 react-native 0.60.5,我不需要将 pod 库放在与库的链接中,因为 pod 已经存在并且它通过自动链接来处理它们。您还需要检查您正在使用的库是否需要针对 react native 0.60.0 进行额外配置,并且仅链接 pod 尚不支持它。
  • 你好。您所说的“pod 已经存在并且它通过自动链接处理它们”是什么意思? AFAIK,只有具有 *.podspecs 的库才会执行自动链接(如果我错了,请纠正我)。无论如何,从您升级 RN Framework 的经验来看,您如何确定需要在项目的 pod 中添加哪些库?
  • 通常当您手动链接库时,会将其添加到 Link Binary with Libraries。我检查他们的存储库是否已使用 react-native 更新,如果没有,我会在升级后链接它并测试是否仍然有效,这实际上取决于每个库。
  • 在您的工作项目中,您是否也使用 RNFirebase?你能告诉我你的 podfile 长什么样吗?
  • 是的,我用过,看看codepen.io/knivesq/pen/bGGdZmY

标签: ios firebase react-native react-native-ios firebase-analytics


【解决方案1】:

设法解决了我自己的问题,请read my github issue 了解更多详情。

TLDR;
原来我的项目包含一些旧的 Firebase 框架,这些框架附加在 Link Binary with Libraries 中,因此版本来回切换(我想这是我成功构建但不时失败的最佳解释)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    相关资源
    最近更新 更多