Cocos2d-xを始めてから間もないというのに、iOSでは動いて、Androidでは動かないという状況が発生してしまい、調査に疲れました。
結論から言うと、原因はanimations.plistの配置場所でした。
僕は普段はAndroidアプリを開発しているので、開発環境としてはEclipseに慣れています。
しかし、Cocos2d-xで作られたアプリをAndroid実機で動作させるのは少しめんどくさいです。
シェルスクリプトを動かした後で、Eclipseでのビルドを行わなければなりません。
(もっと効率よくビルドする方法もあると思いますが、まだ初心者なので調べておりません)
そのため、コードを書くのはEclipse上で行い、動作の確認はXcodeからiOSシミュレータを起動して行うようになりました。
そんなこんなでしばらくiOSシミュレータでしか動作を確認していなかったのです。
久しぶりにAndroid実機で動作を確認してみたところ、アプリがクラッシュするではありませんか。
おかしいと思いiOSシミュレータで動作を確認すると、こちらは正常に動きます。
まだデバッグ方法もわからない状態なので、CCLog("...")を各所に埋め込んで異常が発生している箇所を特定しました。
結果、animations.plistが読み込めていないことがわかりました。
animations.plistは「Resources/animations/animations.plist」として配置していました。
コード上では以下のように読み込んでいました。
CCAnimationCache *cache = CCAnimationCache::sharedAnimationCache();
cache->addAnimationsWithFile("animations.plist");
iOSで動かすときはXcodeで明示的に参照を行っていたので、これでも正常に動いたようです。
Androidで動かすときは明示的にどうこうしないので、ファイルの場所がわからず実行時にクラッシュしていたようです。
配置場所を「Resources/animations.plist」とすることで、どちらの環境でも正常に動きました。
階層を設けてもAndroid/iOSともに同じコードで動かす方法もあるような気がしますが、そこは未調査でございます。
posted by t2low at 22:00|
Cocos2d-x