当 Fabric 初始化它的模块(Crashlytics / Twitter)时,幕后会发生什么?

What happens under the hood when Fabric initializes it's modules (Crashlytics / Twitter)?

我想将 Crashlytics (3.9.3) 集成到一个内部库中,但我遇到了以下情况: 我们正在使用的内部库之一已经在使用 TwitterKit(2.2.0) 和 Fabric (1.6.7)。这意味着它已经在使用此方法进行初始化:

[Fabric with:@[[Twitter class]]]

现在,这意味着我们不能以相同的方式初始化 Crashlytics,因为不会考虑 Twitter 初始化,因为 "Fabric with" 方法将在后续调用中被忽略。

我知道最好的方法是像这样在主应用程序中调用结构:

[Fabric with:@[[Twitter class], [Crashlytics class]]];

但在我们的例子中,希望不影响已经在使用旧库的应用程序,并保持兼容性。

现在,替换当前的 Fabric Twitter 初始化并使用像这样的旧方法添加 Crashlytics 初始化是否安全?

// replace original with this with info taken from Info.plist
[[Twitter sharedInstance] startWithConsumerKey:consumerKey
                                consumerSecret:consumerSecret];
// in another place
[Crashlytics startWithAPIKey:@"a1b2c3..."];

fabric 是否在幕后做了除上述之外的任何其他事情,还是只是解析 info.plist 的键并初始化框架?我们应该担心任何问题吗?经过测试,似乎工作正常。

此外,我知道 Twitter 不再是最新 Fabric 的一部分,但我们在这里使用一些旧版本。

我还注意到,如果我们保持 "Fabric with Twitter" 部分不变并使用 "startWithAPIKey" 方法初始化 Crashlytics,T​​witter 将无法正常初始化。

这里是来自 Fabric 的迈克。您的方法可能有效,但可能会导致许多问题,因为我们尚未使用该版本的 Twitter 测试任何最新版本的 Fabric,因此您可能会遇到奇怪的 SDK 行为。