use*_*610 21 ios firebase crashlytics google-fabric
在我们的应用程序中使用Firebase时,我有一个相当奇特的场景.在不向项目添加Crashlytics和Fabric的情况下,当我为项目运行单元测试时,会触及以下代码:
@try {
[FIRApp configure];
} @catch (NSException *exception) {
DLog(@"**** Unable to configure Firebase due to exception %@", exception.description);
}
Run Code Online (Sandbox Code Playgroud)
在调试单元测试时,不会引发异常,因此我假设已配置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.'
Run Code Online (Sandbox Code Playgroud)
作为一个错误,当我运行项目,但一切都很好.只有在运行测试时才会出现此问题.我尝试过以下方法:
"${PODS_ROOT}/Fabric/run"到运行脚本但在单元测试目标上仍然得到相同的错误.我认为Firebase没有正确初始化,这反过来导致Fabric无法正确初始化,从而导致失败.但我不确定如何解决这个问题.任何指导和建议将不胜感激.
小智 9
我只是检查一件事。如果您在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
}
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题。我只需添加该代码即可解决问题。我也祝福你。
更改此配置:
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
Run Code Online (Sandbox Code Playgroud)
对此:
def main_pods
pod 'Fabric'
pod 'Crashlytics'
pod 'Firebase/Core'
end
target 'TargetName' do
project 'Project.xcodeproj'
main_pods
# Move tests inside target block
target 'TargetNameTests' do
inherit! :search_paths # add custom flag
end
target 'TargetNameSwiftTests' do
inherit! :search_paths # add custom flag
end
target 'TargetNameUITests' do
inherit! :search_paths # add custom flag
pod 'Utils', '~> 0.3.3'
pod 'Pod', '~> 1.4.1'
end
end
target 'OneMoreTargetName' do
project 'Project.xcodeproj'
main_pods
end
Run Code Online (Sandbox Code Playgroud)
错误消息非常简单。
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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4002 次 |
| 最近记录: |