環境
Windows 10
AndroidStudio 2.2
TwitterKit 2.0.1
Crashlytics 2.6.4
Answers 1.3.10
何が罠か?
通常FabricのKitを使う際は
Fabric.with(this, new Crashlytics());
などとコード上で書いてあげるだけで使用可能になるんですが複数のものを扱う際はこのコードではおかしなことになるというとんでもないものだったという。
具体的にどんな不具合が起きるか
コード上に
Fabric.with(this, new Crashlytics());
Fabric.with(this, new Answers());
Fabric.with(this, new Twitter(config));
などと書くとCrashlyticsとAnswersは動作するのにTwitterは動作しなくなり
Fabric.with(context, new Twitter(config));
Fabric.with(context, new Crashlytics());
Fabric.with(context, new Answers());
と書くとTwitter以外動作しなくなるというもの。
つまり順番を入れ替えるだけで動作可否が決まる上に、このコード実行時にはエラーを吐かないという鬼畜仕様(各種Kitを使うときに初めてエラーになるものがある)
ならどうすればいいのか?
Fabric.Builderを使う
FabricにはBuilderが実装されているので使いたいKitが複数の時は下記のようにするとうまくいく。
Fabric.Builder builder = new Fabric.Builder(context)
.kits(new Twitter(config),
new Crashlytics(),
new Answers());
Fabric.with(builder.build());
以上