在我们的应用中使用Firebase时,我有一个相当奇特的场景。在没有向项目添加Crashlytics和Fabric的情况下,当我为项目运行单元测试时,会触及以下代码:
@try {
[FIRApp configure];
} @catch (NSException *exception) {
DLog(@"**** Unable to configure Firebase due to exception %@", exception.description);
}
在调试单元测试时,不会引发异常,因此我假设已配置firebase并且所有内容都正常工作。测试通过,没有问题。
然后我只是简单地将Crashlytics with Fabric添加到项目中。我将此作为运行脚本添加到项目的构建阶段"${PODS_ROOT}/Fabric/run"
,然后再次运行单元测试。单元测试失败了,我得到了:
Terminating app due to uncaught exception 'FABException', reason: '[Fabric] Value of Info.plist key "Fabric" must be a NSDictionary.'
作为一个错误,当我运行项目但一切都很好。运行测试时会出现仅问题。我尝试过以下方法:
"${PODS_ROOT}/Fabric/run"
添加到运行脚本中,但是在单元测试目标上仍然会出现相同的错误。我认为Firebase未正确初始化,这反过来导致Fabric无法正确初始化,从而导致失败。但我不确定如何解决这个问题。任何指导和建议将不胜感激。
答案 0 :(得分:5)
我只检查一件事。
如果您在Firebase控制台中注册了应用,
您的AppDelegate.swift
文件应在Firebase.configure()
函数中包含didFinishLaunchingWithOptions
个代码。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
print("[caution] : didFinishLaunchingWithOptions")
FirebaseApp.configure()
Messaging.messaging().delegate = self
Fabric.with([Crashlytics.self])
return true
}
我遇到了同样的问题。我只是添加代码和问题解决了。 我也希望你。
答案 1 :(得分:3)
错误信息很简单。
Info.plist中的Fabric键格式不正确。
它必须是字典中的字典:
https://fabric.io/kits/ios/crashlytics/install
<key>Fabric</key>
<dict>
<key>APIKey</key>
<string>YOUR_FABRIC_API_KEY</string>
<key>Kits</key>
<array>
<dict>
<key>KitInfo</key>
<dict/>
<key>KitName</key>
<string>Crashlytics</string>
</dict>
</array>
</dict>
答案 2 :(得分:3)
更改此配置:
df['Age'] = ((pd.to_datetime('2017-03-31') - df['DoB'])/np.timedelta64(1, 'Y')).astype(int)
print(df)
DoB Age
0 1973-12-19 43
1 1969-05-22 47
2 1959-09-23 57
3 1963-04-08 53
4 1962-03-25 55
对此:
def main_pods
pod 'Fabric'
pod 'Crashlytics'
pod 'Firebase/Core'
end
target 'TargetName' do
project 'Project.xcodeproj'
main_pods
end
target 'OneMoreTargetName' do
project 'Project.xcodeproj'
main_pods
end
target 'TargetNameTests' do
project 'Project.xcodeproj'
main_pods
end
target 'TargetNameSwiftTests' do
project 'Project.xcodeproj'
main_pods
end
target 'TargetNameUITests' do
project 'Project.xcodeproj'
main_pods
pod 'Utils', '~> 0.3.3'
pod 'Pod', '~> 1.4.1'
end
答案 3 :(得分:1)
在单元测试中,我有一个项目的主要目标是@testable import
,当在单元测试的Podfile中包含Fabric
时,它因上述错误消息而崩溃。但是,当我从Fabric
的单元测试目标中删除了Podfile
时,一切都进行了而没有发生任何事情。
答案 4 :(得分:0)
Xcode 9
对于我的情况,我在Firebase集成之前和创建其他非测试目标之前创建了单元测试目标。 对我有用的是
答案 5 :(得分:0)
我正在升级Crashlytics,并且重现了该错误。就我而言,删除以下代码后,问题已解决:
//[Fabric with:@[[Crashlytics class]]];