Cocos2d-xでiPhone&Androidアプリ開発記6 Android対応

1

Androidアプリ開発経験は全くない状態で始めたCocos2dx。ここまでの開発は使い慣れたXcode上で行ってきましたが、アプリも完成に近づき、いよいよAndroid対応のタイミングがきました。

AndroidはJavaとEclipseを使って開発する。といった最低限の知識からのスタートでしたが、cocos2dxのおかげで、比較的簡単にNexus7実機の動作まで持っていけました。

iPhoneシミュレーターのように、Androidにもシミュレーターがあったんですが、想像以上に激重で、MBAではOSが立ち上がってくるまで数分かかるレベル。マシンパワーがある環境なら別ですが、cocos2dx開発はXcodeで行ったほうがスムーズにいきそうです。

今回は全体の流れと自作アプリで必要だったAndroid対応の要所をまとめます。

スポンサーリンク

 

Android対応の流れ

Eclipse(ADT)のインストールとセッティング。下のサイトを参考にさせてもらいました。私はcocos2dx 2.2.2を使ってるのでバージョンは異なりますが、特に大きな違いはありませんでした。

cocos2d-x 3.0(beta)を使ってみる(導入編):OBAKESAN.net|オバケサン

セッティング後にCocos2dxのプロジェクトを読み込み、とりあえずビルドしてみるものの、どうやら失敗している模様。まずはエラー表示やコンソールの情報などを眺め、Eclipseに慣れる必要があります。

USBケーブルでNexus7を繋いでも認識してるのかどうかさえ分からずといった状態。ちなみに端末側には開発者設定が必要です。最初はソースに問題があるのか、それとも端末が繋がっていないからか、など問題の特定が大変ですが、一つ一つ潰していきます。

いきなり開発中のプロジェクトで試さず、まずはハローワールドで実験しましょう。ハローワールドが実機に表示されたら、最初の一歩は成功。次は自作プロジェクトを読み込みます。

の前に、Eclipseのデフォルトテーマは白すぎて眩しいので、私は黒テーマに変えました。

2

Eclipseを黒テーマでかっこ良くするまでの道 | メモ帳代わりのブログ

 

引っかかったポイント

次は自作プロジェクトを読み込みます。当然のようにエラーがでます。

Xcodeではソースファイルの管理を自動でやってくれてましたが、Eclipseはソースファイルを追加したらAndroid.mkというファイルに、追加したファイルを記述しないとビルドできないようです。

しかし、いちいち編集するのは面倒なので、全てのcppファイルを自動で追加してくれる記述がありました。

Cocos2d-xで新しく作ったクラスを毎回Android.mkに追加せずに済ます - しすぜろ

Android.mkをちゃんと記述するとCocos2dxのビルドが始まるので時間がかかります。私の場合は、ヘッダファイル内でメンバ変数の初期化をしてたので怒られました。ちゃんとコンストラクタで初期化します。

しかし怒られた場所はそこだけ。自作アプリが実機に現れました。これはやっぱり凄すぎる。

しかしフォントがデフォルトフォントになってる。Androidではフォント指定はフォント名じゃなくてファイル名のようです。

Cocos2d-xに美咲フォント(ttf)を導入する - きょこみのーと

プリプロセッサで定義を分けます。

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#define FONT "MisakiGothic"
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#define FONT "misaki_gothic.ttf"
#endif

または関数も用意されています。

TargetPlatform platform = CCApplication::sharedApplication()->getTargetPlatform();
if (platform==kTargetIphone || platform==kTargetIpad){
}else if(platform==kTargetAndroid){
}

 

NativeLauncher

ゲーム内からツイートやレビューページへ推移させるのは必須だと思います。

それらもOSによって処理が分かれますが、NativeLauncherクラスを作成して実現させる方法があります。細かい部分でどうしてもOSコールが必要な場面があるので、先に作っておくと楽です。

cocos2d-xで作成したアプリにツイート機能を実装する | たそがれブランチ

cocos2d-xからブラウザを起動する方法(iOS, Android) | チラ裏開発メモ

iOS7でのレビューページへのリンク « iPhoneアプリ練習帳

例えばNativeLauncherにiOSのバージョンを取得する関数を定義しておけば、cocos2dxのソースから処理を分けれます。

float NativeLauncher::getOsVersion()
{
    return [[[UIDevice currentDevice] systemVersion] floatValue];
}

 

 

スポンサーリンク