-[firtrace inittracewithname:] 中的崩溃断言失败,firtrace.m:86。 NSInternalInconsistencyException',原因:'名称不能为 n

Posted

技术标签:

【中文标题】-[firtrace inittracewithname:] 中的崩溃断言失败,firtrace.m:86。 NSInternalInconsistencyException\',原因:\'名称不能为 nil FCMSDK 更新【英文标题】:Crash assertion failure in -[firtrace inittracewithname:], firtrace.m:86. NSInternalInconsistencyException', reason: 'Name cannot be nil FCMSDK update-[firtrace inittracewithname:] 中的崩溃断言失败,firtrace.m:86。 NSInternalInconsistencyException',原因:'名称不能为 nil FCMSDK 更新 【发布时间】:2021-05-01 02:00:03 【问题描述】:

qgL7c.png https://i.stack.imgur.com/eQFtK.jpg

更新最新的 FCM SDK 后,我的应用程序崩溃了。 trace = Performance.startTrace(name: url.absoluteString)

错误日志 -[firtrace inittracewithname:] 中的崩溃断言失败,firtrace.m:86。 NSInternalInconsistencyException',原因:'名称不能为 nil FCMSDK 更新

【问题讨论】:

欢迎来到 SO。请包含代码和结构作为文本,以便我们可以在复制/粘贴的答案中使用它们。见images and links are evil。图像和链接不可搜索,因此它们可能对未来的读者没有用处,如果链接断开,问题就会失效。此外,请通过单步执行代码来确定哪条线路发生故障,指出您已完成哪些故障排除。最后,请确保您的 cocoapods 是最新的(如果使用 cocoapods)并确保您安装了当前版本的 Firebase。 【参考方案1】:

如果传递给Performance.startTrace(name:) 的字符串长度超过100 个字符,请小心。在内部,他们正在一个名为 NSString *FPRReservableName(NSString *name) 的静态方法中对字符串进行一些清理,如您所见,这不是一个诚实的 API:

NSString *FPRReservableName(NSString *name) 
  NSString *reservableName =
      [name stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
  if ([reservableName hasPrefix:kFPRInternalNamePrefix]) 
    FPRLogError(kFPRClientNameReserved, @"%@ prefix is reserved. Dropped %@.",
                kFPRInternalNamePrefix, reservableName);
    return nil;
  

  if (reservableName.length == 0) 
    FPRLogError(kFPRClientNameLengthCheckFailed, @"Given name is empty.");
    return nil;
  

  if (reservableName.length > kFPRMaxNameLength) 
    FPRLogError(kFPRClientNameLengthCheckFailed, @"%@ is greater than %d characters, dropping it.",
                reservableName, kFPRMaxNameLength);
    return nil;
  

  return reservableName;

当然这是完全不能接受的,因为它会导致运行时出现意外崩溃。

【讨论】:

以上是关于-[firtrace inittracewithname:] 中的崩溃断言失败,firtrace.m:86。 NSInternalInconsistencyException',原因:'名称不能为 n的主要内容,如果未能解决你的问题,请参考以下文章