読者です 読者をやめる 読者になる 読者になる

hyoromoのブログ

iOS/AndroidもしくはCocos2dxネタを書いています

Cocos2dx制アプリがAndroid4.x端末で起動時にクラッシュするバグ対応

Android

Android5.x端末だと正常動作しますが、Android4.x端末でアプリ起動時にクラッシュするバグが発生しました。発生した時、以下のエラーログを吐きます。

java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_relocate(linker.cpp:975): cannot locate symbol "srand" referenced by "libcocos2dcpp.so"...

解決方法

proj.android/jni/Application.mk の一番最後の行に、以下の一行を追加してビルドし直すと直ります。

APP_PLATFORM := android-15

Androidのプラットフォーム番号を指定する事で解決します。なので、AndroidManifest.xmlandroid:minSdkVersion で指定している番号を指定ください

悪い例

先週末に「ぼっちりとり2」というアプリをリリースしたのですが、この問題を抱えたままリリースして当然のようにレビューでは酷評され、予約トップ10を使ったことを生かせず大失敗してしまいました。
こうなった経緯をつらつらと書きます。実装を2月に完了させ、この時はAndroid4.x/5.xで検証して問題ないことを確認していました。後はイラストが上がってきたら画像置き換え...をしていただけでした。イラストを置き換えしていただけと油断してAndroid5.x端末だけでしか検証しなかった結果がコレですよ。
ぼっちりとり2の開発を放置している間に「Dot Hopping」を開発していたのですが、その時にAndroid SDK ToolsやGoogle Play Serviceの更新をしていたせいか、Cocos2dx v3.3 と何かの相性が悪かったのか、原因が特定できませんでした。
今度からは必ず APP_PLATFORM を定義するよう気をつけ、同じ過ちを繰り返さないようにしたいですね。。。