読者です 読者をやめる 読者になる 読者になる

hyoromoのブログ

iOS/AndroidもしくはCocos2dxネタを書いています

Cocos2d-xでのデバッグ分岐処理の方法

Cocos2d-x Android iOS

f:id:hyoromo:20150219190615j:plain
Cocos2dxにて、Debug/Releaseビルドの処理を分岐したい時に使う手法について書きます。
この手法を取ることで、Debugビルド時のみDebug画面へ遷移可能にしたり、画面上へDebug表示させる等の仕組みを入れることが可能になります。

環境

  • Cocos2dx v3.3
  • Xcode 6.1.1

コード

COCOS2D_DEBUG=1 かで分岐させるだけでOKです。
以下の例ではDebugビルド時はデバッグ表示(FPSなど)し、Releaseビルド時は何も表示しません。

#if COCOS2D_DEBUG
    director->setDisplayStats(true);
    director->setAnimationInterval(1.0 / 60);
#endif

iOSでの仕組み

f:id:hyoromo:20150219104936j:plain
XcodeのTarget > Build Settings > Preprocessor Macros > Debug を確認すると「COCOS2D_DEBUG=1」がデフォルトで追加されています。一方 Releaseの方はされていません。

Releaseビルド用のScheme作成

Releaseビルド状態を確認しやすくする為に専用のSchemeを作成します。なお、これは必須作業ではありません。

  1. Xcodeウィンドウ左上のプロジェクト名の場所をクリックして、New Scheme を選択
  2. 適当に分かりやすい名前(Hoge Release等)を設定
    f:id:hyoromo:20150219105651j:plain
  3. Xcodeウィンドウ左上のプロジェクト名の場所をクリックして、新規作成したSchemeに切り替え
  4. Xcodeウィンドウ左上のプロジェクト名の場所をクリックして、Edit Scheme を選択
  5. Run > Info > Build Configuration を Debug から Release に切り替え
    f:id:hyoromo:20150219105702j:plain

これで登録は完了です。通常時は今までどおりのSchemeでビルド、Release状態を確認したい時は新規追加Schemeに切り替えて確認出来ます。

Android上での仕組み

./build_native.py でのビルドで使うオプション設定で切り替える事が可能です。

# Debug (./build_native.py -b debug と同じ)
./build_native.py

# Release
./build_native.py -b release

オプション指定しないとDebugビルド扱いになる点に注意が必要です。その為にもDebug状態ではFPS表示させて一目で判断出来るようにした方が良いです。

Debug/Releaseに関する内容は jni/Application.mk に記載があります。

+α: iOSで別分岐

Xcode側に限って言えばDebug/Release以外のモードが簡単に追加出来ます。例えばTestFlightやCrashlytics用にDebug/Releaseとは違った分岐をさせたい時などに有効な手です。

  1. Xcodeの プロジェクト> info > Configurations にある「+」マークをクリック
  2. ベースにしたい Configuration を選択して、分かりやすい名前を入力
    f:id:hyoromo:20150219111918j:plain
  3. Target > Build Settings > Preprocessor Macros > 新規作成Configuration をクリックし、適当な値(例: COCOS2D_CRASHLYTICS=1)を追加
  4. あとは「コード」や「iOSでの仕組み」で書いた内容と同じに定義した定数で分岐させ、新規Schemeを作成して切り替えてビルドすれば良いだけ