【cocos2dx】iOS -> Androidでの移行での問題点を解消する

私は、主にXcodeiOS側を作成してからAndroidの処理へんと移行しています。 cocos2dxの良い所はiOS側で作成したモノが、ほぼそのままAndroid側でも実行できるところです。

ただし、全てが上手くいきません。 例えばOSに依存した処理なのがあります。今回は、私が実際に体験した不具合とその解決方法をブログに書きたいと思います。

不具合 1 変数の初期化

グローバル変数を定義しないままそのまま利用すると、意図した通りの結果が帰ってこない箇所があります。 変数はまず初期化をして利用しましょう。

if構文の、int型とbool型

これはOSが違いなのかは不明なのですが、iOS側では「if構文でbool型ではなくint型」を利用してもエラーが出ません。 しかし、eclipseでビルドをするとエラーが返ってきます。

[c]

//このようなエラーが返ってきます。 @@@ aborting libc argument is invalid heap address in dlfree

[/c]

もし、謎のエラーが出た時にはif構文が間違っていないのかを確かめてみてください。

BGM・効果音が小さい

機種によっても違うのですが、Nexsuシリーズに関しては音がかなり小さくなりました。 Android側でプロジェクトを作成する際には、音量を上手く調整しましょう。

ファイルの置き場所に注意

翻訳のために作成していた「Localizable.strings」および「プロパティリスト(plist)」をResource下に配置しないと読み込んでくれません。 前回に引き続き、これが原因でアプリが上手く動きませんでした。

AdApp Localizable strings

バックグラウンドでもBGMが流れる

iOS側だと何もないのですが、Android側だとバックグラウンドでもBGMが流れます。 おそらく私の実装が良くないのだと思います。

広告関係

Android側でも別途広告を配置しなくてはいけません。 その中で苦労したのが、位置と「表示・非表示」の処理です。

特に「表示・非表示」に関しては[UIスレッド]で切り替え処理を行わないとクラッシュするのを忘れていて凄く時間をとられました。 [c]

me.runOnUiThread(new Runnable(){ public void run(){

//ここで「表示」・「非表示」の処理をおこなう

}

[/c]

アプリ内課金について

以前さわりだけ別のプロジェクトでおこなっていたのですが、「アプリ内課金」が実装できませんでした。 ネットに載っている情報が少ないのと私のAndroid側の理解力がないため、時間をかけても難しいと感じています。

できる人に話を聞かないといけないと感じました。 この辺りが1人で開発をしている弱みだと思います。

もし、何か良い方法があれば教えて欲しいです。

最後に

Androidに関しては、「アプリ内課金」以外は何とかなりそうです。 Androidの実機が一つしかないので、画面の配置が心配なので直近で新しいモノを買おうと思っています。