アプリ開発日誌
2017.05.09
AndroidアプリにFirebaseを導入してみる
おはようございます。プログラマの小林です。
今回は、現在の案件でも使用している、Firebaseについて書きたいと思います。
Firebase
Googleから提供されている、mBaaS(mobile backend as a service)です。
導入すると以下のような機能を使用することができます。
- ユーザー解析
- ユーザー認証
- リアルタイムデータベース
- プッシュ通知
- クラッシュレポート
他にも様々な機能が使用できます。
今回は導入と、簡単にクラッシュレポート機能を解説します。
Firebase Console
まずは以下の2つをやっていきます。
- プロジェクトの作成
- 設定ファイルのダウンロード
Firebase Consoleに入ったらまず、プロジェクトを作成します。


プロジェクトの作成が終わると、プロジェクトの管理画面が表示されます。
今回はAndroidアプリに導入するので、「AndroidアプリにFirebaseを追加」を選択します。

作成したいアプリケーションのパッケージ名を設定します。

Firebaseの導入に必要な設定ファイルをダウンロードします。

その後は手順に従って進めていくと、アプリケーションが追加されているはずです。

Firebase SDKを導入
次に、Androidアプリ側にFirebaseを導入していきます。
まず、Android Studioで、先に追加したアプリのパッケージ名と同じパッケージ名のアプリのプロジェクトを作成します。

プロジェクトのapp直下にFirebase Consoleから取得した設定ファイル(google-services.json)をコピーします。

ビルドファイルにFirebaseの設定を記述していきます。
トップレベル(プロジェクト/build.gradle)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'com.google.gms:google-services:3.0.0' // この行を追加
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
アプリレベル(プロジェクト/app/build.gradle)
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.eda.firebase"
minSdkVersion 21
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
// バージョン定義
def supportLibVersion = '25.3.1'
def googleLibVersion = '10.2.4'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile "com.android.support:appcompat-v7:${supportLibVersion}"
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
// Firebase
compile "com.google.firebase:firebase-core:${googleLibVersion}"
compile "com.google.firebase:firebase-crash:${googleLibVersion}" // 今回はcrashを使う
}
apply plugin: 'com.google.gms.google-services' // 最後に記述する
Firebase Crashを試す
アプリがクラッシュしたり、例外をキャッチした時に、Firebase Crashを導入していると、
エラーログを送信してくれます。これはFirebase Consoleから確認できます。
以下はテストコードです。
package com.eda.firebase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.google.firebase.crash.FirebaseCrash;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View view = null;
try {
view.setEnabled(true);
} catch(Exception e) {
FirebaseCrash.logcat(Log.ERROR, "MainActivity", e.getMessage());
FirebaseCrash.report(e); // 非致命的なエラー
}
// ここでアプリが落ちる
view.setEnabled(true);// 致命的なエラー
}
}
アプリが落ちたのを確認した後1~2分後には、Consoleでは以下のように表示されます。


「非致命的」というのが、コード内でtry catchで囲まれている部分です。
「致命的」というのは、onCreateの最後で実行している部分です。アプリが落ちるエラーの場合、こちらになります。
まとめ
Firebaseは最近はCould Functionの機能も追加され、ますますバックエンドとしての
機能が充実してきています。
皆さんもFirebaseを導入して、アプリ開発をどんどん楽にしていきましょう。