cocos2dxでもNewRelic使いたい

NewRelic for Mobileは現時点で cocos2dxなどのc++プロダクトでは使えない認識なんですが、それでもクラッシュレポートなんかを綺麗な画面で見れる環境くらいは欲しい、と思い、セットアップだけしてみました。
きちんとNewRelicのアカウントをとって、サイトが参照できる状態である必要があります


https://docs.newrelic.com/docs/mobile-monitoring/mobile-monitoring-installation/getting-started/ios-installation-configuration#installation

を見ながら導入をすすめてみたので参考になればと思います。

#プラットフォームの選択

![image](https://qiita-image-store.s3.amazonaws.com/0/57477/e51e1b66-8bf0-db4c-9814-334ab24cc8b2.png)
iosを選択した状態にしておきます。

![image](https://qiita-image-store.s3.amazonaws.com/0/57477/9e76d37c-1187-00ea-ac38-b389e61006c2.png)
Latestを選択します

#ダウンロード
![image](https://qiita-image-store.s3.amazonaws.com/0/57477/b479a12b-6342-a54d-0638-d06703740ecd.png)
ダウンロードします

![image](https://qiita-image-store.s3.amazonaws.com/0/57477/20807aa4-4636-d7d4-5751-8d2d2a9d0391.png)
XCodeを開いたら、ダウンロードして解凍した中にある、 NewRelicAgent.frameworkをhierarchy上のFrameworksフォルダにドラッグします
確認のダイアログが開くので、Copy items into destination....を選んで、Create folder references...を選択して、OKを押します(書いてる事そのままですが)

#4つのライブラリをリンカ設定に追加
![image](https://qiita-image-store.s3.amazonaws.com/0/57477/e08126e2-ec25-fbec-7167-f816d220918e.png)
これも記載されている通りなのですが、追加する際にドキュメントにあるものと多少ライブラリ名が異なります。

![image](https://qiita-image-store.s3.amazonaws.com/0/57477/1bff0fb9-0e79-c601-2305-9e2db80c5df9.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/57477/aef5b48a-97d3-fa2c-6371-42f9554ba8c5.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/57477/5af4e768-6e1e-1c1e-dea1-3395331247d5.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/57477/19be55ca-9868-2e13-d808-ad2534e18100.png)

- CoreTelephony.framework
- SystemConfiguration.framework
- libc++.tbd
- libz.tbd

が追加対象となります。

![image](https://qiita-image-store.s3.amazonaws.com/0/57477/2d0b2f24-763a-5ec1-12c6-a133f49a6dfe.png)

ここでは[app_name]-Prefix.pchに書いて、という記載がされていますが、cocos2d-xプロジェクトでは proj.ios_mac/ios/AppController.mm が該当します。
AppController.mmに

```cpp
#import <NewRelicAgent/NewRelic.h>
```

と、didFinishLaunchingWithOptionsの冒頭に
[NewRelic startWithApplicationToken:@"トークン"];
と記載します(ドキュメントページに書いてあるそのままのTOKENを記載すればいいです)。

#dSYMの自動アップロード設定

![image](https://qiita-image-store.s3.amazonaws.com/0/57477/5b2646b6-ad9c-6f90-0b6d-55a6149177d4.png)

build phasesから+を押して、New Run Script Phaseを選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/57477/309ef456-d1c4-981b-9636-173b963e6b13.png)
Run Scriptの入力ウィンドウが出てくるので、ここもドキュメントページにある通りをそのまま入力するといいです。
![image](https://qiita-image-store.s3.amazonaws.com/0/57477/69695b91-941f-d46f-ff7c-49398f846da7.png)

#ビルド

あとはビルドして、アプリを起動します。
NewRelicのサイトにログインして、該当のアプリを見てみると、ネットワーク周りのグラフなどが描画されているのがわかるかと思います。
https://rpm.newrelic.com/accounts/あなたのid/mobile/あなたのアプリid

![image](https://qiita-image-store.s3.amazonaws.com/0/57477/f80245bf-3fb0-6c73-9df8-0cec74abf6a0.png)

###ビルドは通るけど、こんなエラーが出た…

```
error: unable to open '/Users/kakikubo/Library/Developer/Xcode/DerivedData/DemoApp-dgeqdiznzhspckheiifdcloahofj/Build/Products/Debug-iphonesimulator/DemoApp iOS.app.dSYM': No such file or directory
New Relic: Skipping automatic upload of simulator build symbols
Command /bin/sh emitted errors but did not return a nonzero exit code to indicate failure
```

以下の設定を確認しましょう。Build Settingsにあります
![image](https://qiita-image-store.s3.amazonaws.com/0/57477/8e12f6a0-ad1f-e83f-6eb8-5d4c4486c439.png)

## Debug機能は無効にする
きちんと無効にしたビルドでないと機能しません。

```
New Relic Crash Reporting is DISABLED because it has detected the debugger is enabled.
```

アプリ起動時にこんな事いわれちゃいます。以下の通りきちんと無効にしておきましょう
![image](https://qiita-image-store.s3.amazonaws.com/0/57477/706b3d77-a566-fa93-0806-0bc0331198af.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/57477/daee771e-c1b8-4a13-d277-004f1499fbdf.png)

#実機で実行

実機にバイナリをインストールして(ここが重要で、Simulatorでは動作しません)、クラッシュさせてNewRelicのサイトを確認してみると、レポートが表示されているかと思います
※ちょっと内容的にお見せできないですが