Cocos2d-x 2.2.6をMac OS Sierraで動くようにするまでのメモ
仕事でやってて面白かったので許可を取って公開。
環境
- Cocos2d-x 2.2.6
- Eclipse Oxygen.1a Release (4.7.1a)
- Android NDK, Revision 10e
- Android SDK & tools v24.0.3 のもの一式
- Android Studioとは別に用意
- Eclipseの環境設定で下図のように設定

メモ
プロジェクトの作成
python create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language cpp
Eclipse インストーラからJavaのIDEをインストールして環境変数を設定
Help > Install New SoftWareWork withの欄にhttps://dl-ssl.google.com/android/eclipseを入力
cocos2dxのプロジェクトをインポートとプロジェクト間の依存関係の設定
Import > Andorid > Existing Android Code Into Workspaceでcocos2d-x-2.2.6/cocos2dxのplatform/andorid/javaをインポートCopy projects into workspaceにチェックしておく
Import > Andorid > Existing Android Code Into Workspaceでcocos2d-x-2.2.6/cocos2dx/ProjectNameをインポートCopy projects into workspaceにチェックしないProjectNameのAndroidManifest.xml 中のminSDKVersionが小さすぎるので14くらいにあげておく
PackageManager上でProjectNameの上を右クリックしてProperties > Androidを開き、Libraryのところで、libcocos2dxを指すよう設定するisLibraryのチェックはしない(アプリプロジェクトにisLibraryのチェックをするとapkが生成されない)
アプリ側のプロジェクトのLinked Resourcesの修正
- プロジェクトのところで右クリックして
Properteis > Resources > Linked ResourcesのLinked Resourcesのタブを確認。Classes,cocos2dx,extensions,scroptingの壊れているパスを修正
古めのNDKを用意してNDK_ROOTの環境変数を設定
- 古めのNDK(Android NDK, Revision 10e)を https://developer.android.com/ndk/downloads/older_releases.html からDL
EclipseのPreferences > Android > NDKの項目の NDK LocationにDLしてきたNDKを配置したパスを書く
Preferences > Android > NDKに設定したパスが Eclipse に見えてないことがあるのでC/C++ > Build > EnvironmentにもNDK_ROOTとして追加Bulid Projectした結果、build_native.shは走ってくれたが。。
トラブルシューティング
Could not find BuildTest.apk! ...
- https://stackoverflow.com/questions/4778113/android-eclipse-could-not-find-apk
- アプリケーションプロジェクトのプロパティに
isLibraryのチェックが入ってないか
Unknown error: Unable to build: the file dx.jar was not loaded from the SDK folder!
Failed to load /Users/woshidan/Library/Android/sdk/build-tools/26.0.2/lib/dx.jar- https://stackoverflow.com/questions/5228453/android-adt-error-dx-jar-was-not-loaded-from-the-sdk-folder
Eclipse起動時に Failed to get the required ADT version number from the SDK
- Eclipseが想定しているADTのライブラリ構成のパスが古いせいで、ビルドツールの特定のライブラリが見つからないって言われてる(その2)
- Andorid SDKと一緒のディレクトリに入っているツールは
build-tools以外は最新版しか保持できない。buildtools以外のツールのバージョンが v26以上だと同様のメッセージが出るのでAndorid Studio用のSDKとは別のディレクトリにEclipse用の古いバージョンのSDKを入れ直してそちらを使う
エミュレータを起動しようとしたら[Start]が押せず詳細を確認したら Google Nexus 5X No longer exists as a device
Description Resource Path Location TypeThe container 'Android Dependencies' references non existing library'cocos2d-x-2.2.6/cocos2dx/platform/android/java/bin/libcocos2dx.jar' ...
- http://renkaze.seesaa.net/article/405756568.html
libcocos2xdのプロジェクトでjarを吐き出すパスが別のパスに設定されているlibcocos2dxのプロジェクトで右クリックしてProperties > Java Build Path < Sourceの下側のDefault output folderをlibcocos2dx/bin/classesに設定
java.lang.IllegalArgumentException: No configs match configSpec というエラーでエミュレータで起動するとクラッシュする
- http://mapyo.hatenablog.com/entry/2013/08/27/Mac%E3%81%ABCocos2d-x%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%82%92%E4%BD%9C%E3%82%8B
- エミュレータ作成時の設定で
Emulation OptionsのUse Host GPUをチェック
Eclipse でエミュレータを起動しようとしたら PANIC: Missing emulator engine program for 'arm' CPUS... と出る
- Eclipse の ADT からエミュレータのシステムイメージが見えてないとかそういうことな気がする。
- Android Studioで使っている最新のAndroid SDK & Tools とは別にEclipse用の古いバージョンのSDKを入れ直したら解決した
Google Nexus 5X no longer exists as a device とでて Nexus 5 のスキンのエミュレータがつけない
- Eclipse の ADT は対応しているバージョンより新しいAndroid SDKのスキンは存在しないものとして扱う、みたいな雰囲気
- Eclipse のデバイスマネージャから選択できるスキンのエミュレータを使う
まとめ
そろそろEclipseでAndroidを開発するのをやめたほうがいいのでは。
現場からは以上です。