前提
fabricを検証してみようという流れになって、ドキュメントを探したのだけど、あまりなかった。
さらに日本語のブログも情報が古く、ほとんど参考にならない。
また、fabricのサイトの構成がすごく見にくく、情報に行き着くのに時間がかなりかかった。
上記の理由からfabric(に同梱されているCrashlytics)が動くまで対応したことをメモ書きしておく。
Fabricとは
Twitter社が出した、Twitter APIが含まれているライブラリ。
CrashlyticsやMoPubなど他のライブラリも同梱されている。
iOS/Android共にライブラリが用意されており、簡単に導入できる(らしいが正直に言うとAndroidは結構大変だった。)
環境
- Max OS X 10.10.3
- AndroidStudio 1.2 Beta 3
- 実装するアプリケーションはAndroid StudioのHello Worldプロジェクト
アカウントを用意する
fabricのサイトへアクセスし、
「Get Started with Fabric」ボタンをクリックして、「名前」「メールアドレス」を入力する。
まだ登録してから時間が必要らしく、登録完了まで1時間ほどタイムラグがあった。
登録完了メールが届いたら、メールのリンクからfabricのアカウント登録ページに遷移し、そこで名前やパスワード、プロジェクト名を入力する。
pluginを利用したいのであれば、ここからダウンロードする。
ただし、今回はpluginを使わないので使い方は省略します。というより使えたことがなくて、説明しようがない。
今回はAndroidStudioを選択し、プラグインのダウンロードが勝手に始まるので、キャンセルしてClick to continueで進めていくと
何もできない。
毎回このpluginのページに飛ばされて、それ以上進めない。
iOS側を先にやってApi Key/Build Secretを取得することは可能。
ただ、Androidだけでしかもplugin使わないとここで詰まります。Twitterさんなんとかして!
ということで、このままオワリでもいいのですが、自力で解決するのを諦め、Twitterさんにメール。
そしたらプロジェクトのApi Key/Build Secretを教えてもらったのでこれで対応してみる。
(Androidだけ設定する予定だったので新しいアカウントで対応していたから進めないのを知っていただけで、新規でこの状態だったらたぶん使うの見送ってた。)
Api Key/Build Secretを設定する
app(デフォルトの場合)配下にfabric.propertiesというファイルを作成する。
そのファイルを以下のように編集する。
apiSecret=[TwitterからもらったBuild Secret]
apiKey=[TwitterからもらったApi Key]
FabricのGradleプラグインを設定する
Gradleでコマンド一発でFabricと連携したいので、Gradleのプラグインを導入します。
buildscript {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
classpath 'io.fabric.tools:gradle:1.+'
}
}
allprojects {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
}
app/build.gradleにpluginを適応する。'com.android.application'の下に追加する。
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
すでに一度でもdashboardが開くことができた人は
Organizationsから対象のProjectを選択し、
Project名の下にある、API Key/Build Secretをクリックすると出て来ます。(すごく小さいので注意。)
Dashboardを見えるようにする
最初にbuild.gradleのdependenciesに設定を追加する。
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
apply plugin: 'io.fabric'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.github.shiraji.myapplication"
minSdkVersion 9
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile('com.crashlytics.sdk.android:crashlytics:2.2.3@aar') {
transitive = true;
}
compile('com.twitter.sdk.android:twitter-core:1.0.0@aar') {
transitive = true;
}
compile('com.mopub.sdk.android:mopub:3.3.0@aar') {
transitive = true;
}
}
Crashlyticsの設定を埋め込む
さらに、Crashlyticsの設定をApplicationクラスに追加します。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fabric.with(getApplicationContext(), new Crashlytics());
}
}
カスタムApplicationを持っていないアプリでは、最初にlaunchされるActivity内で以下のように設定します。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Fabric.with(this, new Crashlytics());
setContentView(R.layout.activity_main);
}
これでアプリを実行するとDashboardが見えるようになります。
Crashlyticsに落ちてないけど情報を送る
Fabricとはもう関係ないけど、落ちてないけど、情報だけ送りたい場合は以下のコードで送ることができる。
Crashlytics.logException(new Exception("ここに何か書くとさらに良いかも?"));
Non-Fatalとして送られるので、DashboardでFatalのみのフィルタかけている場合は注意。
最後に
会社でこのツールを使っていく感じになりつつあるので、ドキュメントを随時更新していこうかと思います。
でもTwitterさんが整理されたドキュメント作ってくれたらそれも必要ないのだけどね!!!