はじめに
cocos2d-x 3.17.2 を C++API の利用を前提にセットアップして画像のようなサンプルアプリを Android Emulator & iOS Simulator 上で起動させることをこの記事のゴールとします。
v2.2.6(iOSのみ)はCocos2d-x 2.2.6 のサンプルアプリを起動する(iOS)をご確認ください。
環境
- cocos2d-x 3.17.2
- Xcode 11.6
- Android Studio 3.6.3
- Gradle 4.6
- NDK 16.1.4479499
- CMake 3.6.4111459
導入手順
Cocos2d-x本体と依存関係のダウンロード
基本的には公式のREADMEのとおりです。
https://github.com/cocos2d/cocos2d-x/tree/cocos2d-x-3.17.2
1. リポジトリをcloneする
$ git clone git@github.com:cocos2d/cocos2d-x.git
2. cocos2d-x-3.17.2にswichする
$ cd cocos2d-x
$ git switch -c v3.17.2 cocos2d-x-3.17.2
3. 依存関係をダウンロードする
依存関係をcocos2d-x-3rd-party-libs-binからダウンロードします。
$ python download-deps.py
4. サブモジュールの初期化
cocosコマンドなどのサブモジュールを初期化します。
$ git submodule update --init
cocosコマンドのセットアップ
1. 環境変数の設定
cocosコマンド実行やプロジェクトのテンプレート作成に必要な環境変数を設定します。
$ cd cocos2d-x
$ ./setup.py
setup.pyの実行後に以下のメッセージが表示されるので source を実行して環境変数を読み込みます。
Please execute command: "source 環境によって異なるファイルパス" to make added system variables take effect
$ source 環境によって異なるファイルパス
2. cocosコマンドでバージョンを確認
cocosコマンドで cocos2d-x のバージョンが 3.17.2 であることをを確認します。
$ cocos -v
cocos2d-x-3.17.2
Cocos Console 2.3
動作確認用のプロジェクトを作成する
以下コマンドを参考にプロジェクトを作成します。
$ cocos new MyGame -p com.your_company.mygame -l cpp -d MyGameDir
iOSプロジェクトをビルドする
1. iOSプロジェクトを開く
proj.ios_mac にXcodeプロジェクトが作成されるので移動して開きます。
$ cd MyGameDir/MyGame/proj.ios_mac
$ open open MyGame.xcodeproj
2. ビルドターゲットの変更
3. 一度ビルドしてエラーを修正する
ビルドすると Argument value 10880 is outside the valid range [0, 255]
のエラーになるので、以下の記事を参考に修正します。
Cocos2d-x 3.17.2をiOS, Androidでコンパイルできないんですけど
4. Info.plistでBundle version stringを設定
Bundle version stringが空になっているので設定します。
<key>CFBundleShortVersionString</key>
<string>0.0.1</string>
5. 実行して動作確認する
プロジェクトをRunして雛形のアプリの起動を確認します。
Androidプロジェクトのビルド
1. Androidプロジェクトを開く
proj.android に作成されるAndroidプロジェクトを開きます。
$ cd MyGameDir/MyGame/proj.android
2. NDKとCMakeのインストール
以下公式ドキュメントを参考に NDK 16.x と CMake 3.6.x をインストールします。
https://developer.android.com/studio/projects/install-ndk
3. エミュレータで実行する
実行してサンプルアプリの起動を確認します。
トラブルシューティング
NDK not configured が出る場合
NDKをダウンロードしたにも関わらず、エラーが表示される場合はNDKパスの設定が必要です。
A problem occurred configuring project ':MyGame'.
> NDK not configured.
Download it with SDK manager.
プロジェクトローカルな設定で修正する例は次のとおりです。
ndk.dir=/User/username/Library/Android/sdk/ndk/16.1.4479499
CMAKE_MAKE_PROGRAM is not set が出る場合
CMakeをダウンロードしたにも関わらず、エラーが表示される場合 Android Gradle プラグインのバージョンとCMakeのバージョンの組み合わせが悪い可能性があります。
CMake Error: CMake was unable to find a build program corresponding to "Ninja".
CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMakeのバージョンを3.6に下げるか、Android Gradle プラグインのバージョンを上げることで対応ができます。
Android Gradle プラグインのバージョンを上げる
CMake 3.10を使う場合は、プロジェクトルートのbuld.gradleを開き、Android Gradle プラグインのバージョンを 3.1.0 から 3.2.1 に変更して Sync Project with Gradle Files を再実行してください。
classpath 'com.android.tools.build:gradle:3.2.1'