はじめに
Fabric.ioがUnityをサポートするとのメールが来ていたので
少し試してみました
※この記事はすでにFabric.ioを利用している前提ですので、サインアップなどについては割愛します
環境について
version | |
---|---|
OS | OSX 10.11.3 |
Unity | 5.3.3f1 |
Crashlytics | v.1.0.0 |
UnityプロジェクトのプラットフォームはAndroidを想定
導入手順
ネイティブ向けと同様にほとんどドキュメントを見なくても導入できました
プラグインのインストール
- Fabric.ioの"Download Plugins"からUnity向けプラグインをDL
- Fabric.unitypackageをUnityプロジェクトにインポート
- メニューバーから Fabric > Prepare Fabric を選択する
- Assets/Editor Default Resources が作成され、
[Fabric] Generated a new install id ~~~~~
とログに表示されたら完了
アプリの登録
- インストールが終わったらFabric.ioのEditorウィンドウが立ち上がるのでログインする
- ログインができたらインストールするKitを選ぶ
今回はCrashlyticsで進めます - Installボタンを押して待機
- 追加のアセットを勧められるので言われるがままにインポートする
- AndroidManifest.xmlの編集する旨を伝えるウィンドウが表示されるのでApplyを押す
- "起動時のシーンを開いて、このオブジェクトをドラッグ&ドロップしてください" と出るので従う
- ビルドして端末からアプリを起動させる
- Fabric.ioのページを確認するとアプリが登録されている
インポートしたファイルについて
登録が完了したので何をインポートしたのか、ディレクトリごとに詳しく見てみます
Editor Default Resources
Fabric/Prepare Fabric実行後に作成されます。
FabricSettings.assetにFabric.ioに関する設定を記載するようです。
AndroidManifest.xmlを自動編集した際に、ユーザーの情報を自動で記載してくれます。
Fabric
Fabric/Prepare Fabric実行後に作成されます
カスタムエディタのスクリプトや、Runtime向けスクリプトなどが入っています
Plugins
Android/iOS向けプラグインアセットです。Kitのインストール後に作成されます。
ネイティブプラグインは全てここにまとめられるようです
実行コード
折角なのでインストールしたCrashlyticsとAnswerを使ってみます
Fabric > Crashlytics > Documentation で何ができるかを確認できます
テストシーンにボタンを配置してボタンが押されたらイベントを通知する
みたいなシンプルなものです
using UnityEngine;
using System.Collections;
public class FabricCtrl : MonoBehaviour {
public void OnSignUp(){
Fabric.Answers.Answers.LogSignUp();
}
public void OnSignIn(){
Fabric.Answers.Answers.LogLogin();
}
public void OnContentView(){
Fabric.Answers.Answers.LogContentView("content A");
}
public void OnCrash(){
Fabric.Crashlytics.Crashlytics.Log("onCrash");
Fabric.Crashlytics.Crashlytics.Crash();
}
}
namespcae Fabric からそれぞれのツールにアクセスできるようです。
Fabric.ioのAnswerやCrashlyticsを見ればそれぞれの通信が行われたことが確認できます
Beta Distributions
ドキュメントにfastlaneでできると書いているので試してみます。
fastlaneのインストール
fastlaneをGitHubの指示に従ってインストールする(https://github.com/fastlane/fastlane)
インストールのために環境として、
OSX or Lion であること、Ruby2.0.0以上であることが必須とされています
-
ターミナルから以下のコマンドを実行する
sudo gem install fastlane --verbose
gem cleanup
-
終わったら
fastlane -v
でバージョンを確認してみます
fastlaneの初期化
Fastlaneを使用するためプロジェクト内での設定を行います
-
.apk/.ipaのあるディレクトリに移動する
Unity環境なのでプロジェクトのディレクトリがそれにあたるかと思います -
fastlane init
を実行する
いくつか質問をされますが使用している環境に合わせて入力します
以下、3点ほど注意点
・これを実行する前に.apk/.ipaを作成しておく必要があります
(今いるディレクトリにファイルがないとアプリのある場所を聞かれる)
・また、バージョン管理をしているかどうかも確認されますが、noを選択すると初期化を中断されます
・Path to the json secret file:
では何も入力せず、そのままEnterを押します
正常に終了していればSuccessfully finished setting up fastlane
と表示される -
初期化が終わったら以下のファイルが作成されたことを確認する
(Project Directory)/fastlane/Appfile : バンドルID or パッケージ名が書かれたファイル
(Project Directory)/fastlane/Fastfile : fastlaneの処理がrubyで書かれている
Betaにアップロードする
1 . Fastfileを編集する
既存のレーン beta をドキュメントのサンプルのものに書き換えて保存します
ドキュメントに書かれている通り、api_tokenとbuild_secretについては自身のプロジェクトのものに置き換えます
lane :beta do
crashlytics(
emails: "sample@sample.com",
api_token: "FABRIC_API_KEY",
build_secret: "FABRIC_BUILD_SECRET"
)
end
2 . fastlane beta
を実行
FastFileに問題がなければアップロードできているはず、ですがなにやらエラーが出てしまいました
[!] The `crashlytics_path` must be a jar file for Android (RuntimeError)
設定しそびれているパラメータがあるようです
ターミナルからFastlane actions crashlytics
でパラメータを確認できます
どうやらcrashlytics-developtools.jarが必要なようでした
3 . crashlytics-developtools.jarをDL
少しググってみるとFabric.ioのAnt向けビルドツールに含まれているようです
Fabricの Download PluginsからBuild Tools > Ant を選んでcrashlytics.zipをDLし、
今回は以下の場所に配置したことにします
(Project Directory)/crashlytics/crashlytics-devtools.jar
4 . Fastfileを修正する
不足していたjarファイルを指定します
crashlytics_pathにjarファイルを相対パスで指定しました
lane :beta do
crashlytics(
crashlytics_path: "crashlytics/crashlytics-devtools.jar",
emails: "sample@sample.com",
api_token: "FABRIC_API_KEY",
build_secret: "FABRIC_BUILD_SECRET"
)
end
5 . アップロードする
Fastfileを修正したら再度ターミナルから fastlane beta
を実行します
Build successfully uploaded to Crashlytics Beta
と表示されたらFabric.ioを確認します
アップロードを確認できるはずです
最後に
まだTwitter Kit についてやiOSの設定についてなど触れるところはありますが、
今回はここまでにします
BetaについてはTestFlight難民となった後からお世話になっていますが、今までUnityで開発している環境だと導入が面倒くさいのが難点だったものの、今回ので随分と楽ができそうです
ちなみにiOSについてはこちらのブログが参考になりそうでした
http://engineering.otobank.co.jp/entry/ios-deploy-use-fastlane-crashlytics