Titanium で Crashlytics を導入する

**注意事項**

* Titanium が自動生成する Xcode プロジェクトに手を入れます
 * Titanium で Clean すると、やり直しです
* Titanium SDK がバージョンアップすると、手を入れる箇所が変わる可能性があります
 * Titanium SDK 4.0.0.GA で試しています
* SDK からコピーされていくる TiApp.m に手を入れます
 * ちゃんと確認して作業しないとビルドできなくなります
* うまくいかなかったら Titanium で Clean するか、build フォルダを削除しましょう
 * 後腐れないです
* モジュールが入っているとうまくビルドできないかもしれません
 * ぼくはできませんでした　→　再度試したらできました（なんだったんだろ？）
* そもそもモジュール化すれば良いんじゃ？
 * モジュールプロジェクトに入れようとしたら、Fabric さんに「アプリじゃないよね？」って怒られました
* ころんでもなかない

## Titanium プロジェクトを作ります

```sh
$ ti create --id be.k0suke.crashlytics --name Crashlytics --platforms ios --type app --url http:// --workspace-dir .
```

## 一旦ビルドしましょう

```sh
$ cd Crashlytics
$ ti build -p ios -T device -C XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
```

```/path/to/Crashlytics/build/iphone/Crashlytics.xcodeproj``` として Xcode のプロジェクトが生成されます。

## Fabric を起動します

![スクリーンショット 2015-05-29 12.58.18.png](https://qiita-image-store.s3.amazonaws.com/0/47686/0ecce43c-84c9-b0d7-1d4d-9f0079ad49f1.png)

Select your Xcode Project には Crashlytics.xcodeproj が（たぶん）存在しないので、Browse... から ```/path/to/Crashlytics/build/iphone/Crashlytics.xcodeproj``` を選択します。

![スクリーンショット 2015-05-29 13.08.png](https://qiita-image-store.s3.amazonaws.com/0/47686/a6325bb1-9518-6d9c-769c-62248cb33437.png)

選択すると Xcode が起動し、Titanium が生成したプロジェクトが開かれます。

## Crashlytics をインストールします

![スクリーンショット 2015-05-29 12.58.57.png](https://qiita-image-store.s3.amazonaws.com/0/47686/1eca8add-6140-10c9-1b0a-64d6f5110f76.png)

あらかじめ、2. の Paste in the following command にある Copy をクリックし、スクリプトをコピーしておきましょう。

![スクリーンショット 2015-05-29 12.59.02.png](https://qiita-image-store.s3.amazonaws.com/0/47686/bc8c7d92-8c68-5dfd-deed-67071f14a298.png)

Fabric に従い、Build Phases を選択し、「＋」から New Run Script Phase を選択してください。

![スクリーンショット 2015-05-29 13.08.png](https://qiita-image-store.s3.amazonaws.com/0/47686/2e6d5f15-bc9b-b058-5aa5-67076ffebcba.png)
![スクリーンショット 2015-05-29 13.09.02.png](https://qiita-image-store.s3.amazonaws.com/0/47686/34b32c74-874a-812f-7f20-d374010b2f00.png)

Run Script を開き、Shell のところへ先ほどコピーしたスクリプトをペーストします。

![スクリーンショット 2015-05-29 13.09.png](https://qiita-image-store.s3.amazonaws.com/0/47686/b607764b-8280-d2e0-58ca-955e584f130d.png)

Cmd＋B でビルドします。ビルドが終わると、Fabric が以下のような画面に遷移します。

![スクリーンショット 2015-05-29 13.10.06.png](https://qiita-image-store.s3.amazonaws.com/0/47686/38753420-b981-c0bd-8286-bbee4ee0771e.png)

Xcode の Frameworks を開いておきましょう。

![スクリーンショット 2015-05-29 13.32.41.png](https://qiita-image-store.s3.amazonaws.com/0/47686/cc2abef9-cf95-1670-c061-5d1a6c28e03a.png)

Fabric のトランクアイコンを Xcode の Frameworks までドラッグ＆ドロップし、Finish をクリックします。

![スクリーンショット 2015-05-29 13.10.23.png](https://qiita-image-store.s3.amazonaws.com/0/47686/97f96735-3456-1950-3d50-b2135ce81554.png)

Framewroks の中に、Fabric.framework と Crashlytics.framework が追加されているのを確認して下さい。

![スクリーンショット 2015-05-29 13.10.30.png](https://qiita-image-store.s3.amazonaws.com/0/47686/fc9a427c-7c53-682e-3ecc-7ba043ab0b3a.png)

Fabric が以下の画面に遷移します。

![スクリーンショット 2015-05-29 13.38.18.png](https://qiita-image-store.s3.amazonaws.com/0/47686/07b7d4a2-c48e-cb60-afb3-3fc636091d34.png)

Xcode で Classes → API → TiApp.m を開きます。

![スクリーンショット 2015-05-29 13.10.41.png](https://qiita-image-store.s3.amazonaws.com/0/47686/c04a8996-8330-658c-30ef-db2f58853148.png)

```objc
#import <Fabric/Fabric.h>
#import <Crashlytics/Crashlytics.h>
```

を、この辺りへコピーします。

```objc
#ifdef KROLL_COVERAGE
# import "KrollCoverage.h"
#endif

#import <Fabric/Fabric.h>
#import <Crashlytics/Crashlytics.h>

TiApp* sharedApp;

int TiDebugPort = 2525;
```

![スクリーンショット 2015-05-29 13.10.51.png](https://qiita-image-store.s3.amazonaws.com/0/47686/beb7978a-f7a4-9aac-6fd5-b52be774cb68.png)

```objc
[Fabric with:@[CrashlyticsKit]];
```

を、この辺りへコピーします。

```objc
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions_
{
    [Fabric with:@[CrashlyticsKit]];
    
	started = [NSDate timeIntervalSinceReferenceDate];
	[TiExceptionHandler defaultExceptionHandler];
```

![スクリーンショット 2015-05-29 13.11.14.png](https://qiita-image-store.s3.amazonaws.com/0/47686/5303b0d2-c8b2-163e-e8bb-4b0414c68ca0.png)

Cmd＋R で実機にインストールされ、アプリが起動します。

![スクリーンショット 2015-05-29 13.12.24.png](https://qiita-image-store.s3.amazonaws.com/0/47686/d3927c95-24cc-dad5-de9d-207724bdb0b4.png)

お疲れ様でした。