[Android][Fabric] Crashlytics を使って Android アプリのベータ版を配信する

2015.05.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Crashlytics をベータ版配信に活用しよう

Crashlytics はアプリのクラッシュレポートを収集し、統計を取るためのサービスですが、アプリのベータ版を配信するための Beta Distribution という機能を提供しています。こちらを利用すると、旧 TestFlight や Deploy Gate に近い、ベータ版の配信を行うことができます。

先日 iOS アプリでベータ配信を行う方法をご紹介しましたが、今回は Android アプリでベータ配信する方法をご紹介したいと思います。

事前に必要なこと

Beta Distribution を利用するには、以下の作業が事前に必要になります。

  • Android Studio のインストール (2015/05/21現在で 1.2.1.1 が最新バージョン)
  • Fabric アカウントの登録 (こちらを参考)
  • テスターのメールアドレス

Android Studio に Fabric プラグインをインストールする

まず初めに、Android Studio に Fabric プラグインをインストールしましょう。以下の URL にアクセスし、Fabric プラグインをローカルにダウンロードします。

次に Android Studio のメニューから「Preferences...」を選び、環境設定を開きます。その中の「Plugins」の「Install plugin from disk...」を選択し、先ほどダウンロードしたファイルを開きます。

crashlytics-beta-android01

プラグインのリストの中に「Fabric For Android Studio」が表示されればインストール完了です。

crashlytics-beta-android02

「OK」を押すとリスタートが求められるので、リスタートしましょう。起動するとツールバーの中にアイコンが表示されるはずです。

crashlytics-beta-android03

Crashlytics ライブラリをインストールする

次に、Android アプリプロジェクトに Crashlytics ライブラリをインストールしましょう。現時点(2015/05/21)での最新バージョンの 2.2.4 を導入します。まず、先ほど確認したアイコンをクリックすると、ログイン画面が表示されるはずです。Fabric アカウントの情報を入力してログインしましょう。

crashlytics-beta-android04

ちなみにちょっとした Tips ですが、Fabric からログアウトしたい場合は Fabric プラグイン表示中に Cmd + L または Control + L を押すとできます。

次にインストールするプラグインを選択します。今回は一番上の「Crashlytics」ですね。

crashlytics-beta-android05

次にインストールの手順が表示されます。build.gradleAndroidManifest.xmlMainActivity.java の編集が必要です。

crashlytics-beta-android06

順番に見て行きましょう。まずは build.gradle に Crashlytics のプラグインをインストールする設定を追加します。

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "jp.classmethod.myapplication"
        minSdkVersion 14
        targetSdkVersion 22
        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.android.support:appcompat-v7:22.0.0'
    compile('com.crashlytics.sdk.android:crashlytics:2.2.4@aar') {
        transitive = true;
    }
}

編集が終わったら、Gradle Sync を実行しておきましょう。次に AndroidManifest.xml です。YOUR_API_KEY は適宜変更してください。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.classmethod.myapplication" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="io.fabric.ApiKey"
            android:value="YOUR_API_KEY" />
    </application>

    <uses-permission android:name="android.permission.INTERNET" />

</manifest>

最後に、MainActivity.java です。ここはベータ配信というよりはクラッシュレポート送信のための設定になります。適宜、必要なタイミングで呼び出してください。

package jp.classmethod.myapplication;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Fabric.with(this, new Crashlytics());
        setContentView(R.layout.activity_main);
    }

}

これでインストールは完了です!

ベータ配信を行う

次に、ベータ配信を行ってみましょう。まず fabric.properties がアプリフォルダ下に生成されているので開きます。この中に、リリースノート、送信したい相手のメールアドレスまたはグループを記入しましょう(グループは Fabric 管理コンソールから設定しておく必要あり)。

#Contains API Secret used to validate your application. Commit to internal source control; avoid making secret public.
#Thu May 21 21:26:34 JST 2015
apiSecret=YOUR_API_SECRET
ext.betaDistributionReleaseNotes="テストのリリースです"
ext.betaDistributionEmails="BetaUser@yourcompany.com"
ext.betaDistributionGroupAliases="my-best-testers"

あとはコマンドを叩くだけです。デバッグビルドで良い場合は assembleDebug crashlyticsUploadDistributionDebug、リリースビルドにしたい場合はassembleRelease crashlyticsUploadDistributionRelease を叩きます。リリースビルドはもちろん Keystore を作成・設定を済ませておく必要があります。

$ ./gradlew assembleRelease crashlyticsUploadDistributionDebug
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE

...省略...

:app:assembleDebug
:app:crashlyticsUploadDistributionDebug
Uploading /Users/suwa-yuki/AndroidStudioProjects/MyApplication/app/build/outputs/apk/app-debug.apk to Crashlytics...

BUILD SUCCESSFUL

Total time: 16.192 secs

これで完了です!Fabric 管理コンソールを見てみると、配信できていることが確認できます。

crashlytics-beta-android07

まとめ

iOS に続いて Android での配信までの手順でした。今回は Fabric プラグインの導入から解説しているため少し長くなっていますが、プラグイン導入済みであれば build.gradleAndroidManifest.xml をちょっと設定するだけで済みます。簡単なので、ぜひ試してみてください。

テスト端末でのインストール手順は次回解説します。

参考