-[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的主要内容,如果未能解决你的问题,请参考以下文章