LCL Engineers' Blog

夜行バス比較なび・格安移動・高速バス比較を運営する 株式会社LCL開発者のブログ

Fabric Crashlyticsで iOSアプリをテスト配布する

弊社ではモバイルアプリケーションのBeta配信に、Fabric Crashlyticsを利用しています。

Web上にいくつか記事がありますが、部分的な記載であったり、少し環境が古かったりするので今回まとめました。

2016年3月時点の最新環境である、下記の環境で試しています。

  • Xcode 7.3
  • Swift 2.2
  • Fabric 2.3.1
  • Crashlytics 3.7.0

Fabricとは

Twitter社が提供しているモバイルアプリケーションプラットフォームです。 モバイルアプリケーション開発の各種ツール(SDK)がモジュール形式で提供されています。

Fabric - Twitter's Mobile Development Platform

Crashlyticsとは

Fabricに含まれているツールの一つで、クラッシュログの収集や、実機へのテスト配信等を行うことができます。

Crashlytics for iOS - Fabric Summary

Fabricのアカウント取得とMacアプリのインストール

Fabricのサイトからウィザードにそってアカウント取得し、専用アプリをインストールします。 難しい手順ではないので、割愛します。 ( 以下の記事が参考になります)

qiita.com

Crashlyticsのプロジェクトへの導入

FabricのMacアプリを起動すると、ウィンドウが表示されるので、ログインします。

f:id:lcl-engineer:20160327165906p:plain

プロジェクトの一覧が表示されるので、導入したいプロジェクトを選択します。 CocoaPodsを利用している場合は、xcworkspaceを選択します。

※ サンプルプロジェクト名は、fabircとタイプスミスしています・・

f:id:lcl-engineer:20160327171729p:plain

Fabricのツール一覧が表示されるので、今回はCrashlytics を選択します。

f:id:lcl-engineer:20160327172015p:plain

導入する方法を聞かれます。

CocoaPodsで導入したいので、左の赤いアイコンを選択します。 プロジェクトの選択時に、xcworkspaceを選択していない場合は、左のアイコンは表示されません。

f:id:lcl-engineer:20160327172617p:plain

Podfileの記載内容が表示されるので、記載に従いインストールします。 通常のCocoaPodsでのライブラリインストールと同じです。 インストール後に、次へ進みます。

f:id:lcl-engineer:20160327173041p:plain

ビルドスクリプトが表示されるので、コピーします。

f:id:lcl-engineer:20160327173917p:plain

Xcodeで該当プロジェクトの「Build Phases」から「New Run Script Phase」を選択します。

f:id:lcl-engineer:20160327201428p:plain

Shellにコピーしたスクリプトを貼り付けて、⌘+Bでビルドします。 ビルドが成功すると次の画面に進みます。

f:id:lcl-engineer:20160327173958p:plain

Fabric埋め込むコードが表示されるので、AppDelegate.swiftへ埋め込みます。

f:id:lcl-engineer:20160327174413p:plain

⌘+Rでアプリをシミュレータで実行します。

f:id:lcl-engineer:20160327174502p:plain

実行が成功すると導入完了のため、Doneで終了します。

f:id:lcl-engineer:20160327175657p:plain

アプリのテスト配信

※ テスト対象デバイスのUDIDを登録、Provisioning Profile等の作成が完了していることが前提となります。

アプリの配信はMacアプリから行う方法と、コマンドラインから行う方法の2種類がありますが、今回は Fabric アプリからの配信について記載します。

Fabric アプリからの配信

まず、FabricのMacアプリを起動しておきます。

次に、Xcodeでアーカイブを作成します。

Deviceで「Gneric iOS Device」を選択し、「Product」>「Archive」でアーカイブを作成します。

f:id:lcl-engineer:20160327203506p:plain

アーカイブが成功するとFabricアプリが自動的に以下の画面となり、「Distribute」ボタンから配布できるようになります。

f:id:lcl-engineer:20160327204257p:plain

f:id:lcl-engineer:20160327204543p:plain

任意でRelase notesを記載します。

f:id:lcl-engineer:20160327205032p:plain

アップロードが開始されます。

f:id:lcl-engineer:20160327205135p:plain

アップロードが完了すると、テスト対象者へメールが送信され配信完了です。

f:id:lcl-engineer:20160327205654p:plain

各デバイスへのテスト対象アプリのインストール

テスト対象者には、「You’ve been invited to test [アプリ名] 」というタイトルでメールが届きます。

f:id:lcl-engineer:20160328124329p:plain

Safariで開いていない場合は、下記のようなエラー画面がでるので、URLをコピーしてSafariで開きます。

f:id:lcl-engineer:20160328003938p:plain

Safariで開くと端末名称の設定画面がでるので、任意名称を設定して次へ進みます。 Profileがインストールされていない場合は、Profileのインストールが求められので、ナビゲーションにそってインストールします。

f:id:lcl-engineer:20160328004155p:plain

Profileのインストールが終わると、アプリのインストール画面が表示されます。 ここでインストールボタンが表示されない場合は、端末のUDIDの登録ミスやプロビジョニングファイルにテスト端末のUDIDが含まれていなどが考えられます。

f:id:lcl-engineer:20160328004241p:plain

インストールボタンを押下し、ホーム画面を見ると、アプリがインストールされ完了です。

f:id:lcl-engineer:20160328004806p:plain

Fabricの管理画面を見ると、各テスト対象者のインストールステータスが確認できます。

f:id:lcl-engineer:20160328005007p:plain

テスト対象アプリのバージョンアップ(更新)

Crashlyticsでは、Xcodeの「Version」と「Build」でバージョンを識別します。 そのため、新しいバージョンのアプリをテスト配信するには、バージョンを上げる必要があります。

f:id:lcl-engineer:20160328004344p:plain

アーカイブ、配信の手順は新規インストール時と同じです。 なお、更新の場合 テスト対象端末側では、再度メールから開くようなことは不要で、アプリを立ち上げると更新情報が通知され新しいアプリをインストールできます。

f:id:lcl-engineer:20160328004914p:plain

まとめ

TestFlightと比較して、UDIDの登録などの手間はかかりますが、 テスターにApple IDを作って貰う必要が無いことや、配布からテスト可能までが早い(TesfFlightは処理に時間がかかる)などメリットも多いので、 頻繁にアプリを更新して検証する、初期フェーズでのテストには非常に有用です。

追記

Bitrise + Fabric に関する記事も記載しました。

techblog.lclco.com