LoginSignup
5
5

More than 5 years have passed since last update.

Fabricの各種ツールを同時に使うときの罠

Posted at

環境

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());

以上

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5