LoginSignup
41
41

More than 5 years have passed since last update.

【Android】Android 5.0 Lolipop に対応するには【cocos2d-x】

Posted at

Android 5.0 Lolipopに変わって

各社共に色々と問題が起こっているようです。
主なAndroidアプリのAndroid 5.0(Lollipop)対応状況まとめ
自分のアプリも例に漏れず問題が発生しましたが、
どうやら対応出来たみたいですので、ここにメモしておきます。

問題その1 起動出来ない

Android 5.0 Lolipop の端末で起動した直後に
「アプリケーションに問題が発生しました」
とネイティブダイアログが表示されて起動出来ませんでした。

エラー内容は
JNI DETECTED ERROR IN APPLICATION : illegal class name "jp.co.game.hoge"
art/runtime/check_jni.cc(65)

このような感じでした。

その原因はJNIの記述法にありました。

今まで

AndroidBridge.cpp
    JNIEnv *pEnv;
    //~~~
    jclass cls = pEnv->FindClass("jp.co.game.hoge");
    //~~~

と書いていてAndroid4系まで問題なく動作してましたが、これを

AndroidBridge.cpp
    JNIEnv *pEnv;
    //~~~
    jclass cls = pEnv->FindClass("jp/co/game/hoge");
    //~~~

このようにスラッシュ区切りに変更。

また、jboolean型の値を取得するのに

AndroidBridge.cpp
    JNIEnv *pEnv;
    jclass classId;
    jmethodID methodId;
    //~~~
    jboolean flg = (jboolean)pEnv->CallStaticIntMethod(classId , methodId);
    //~~~

とintから受けてもAndroid4系までは大丈夫でしたが、
これも5.0ではエラーになりました。

AndroidBridge.cpp
    JNIEnv *pEnv;
    jclass classId;
    jmethodID methodId;
    //~~~
    jboolean flg = (jboolean)pEnv->CallStaticBooleanMethod(classId , methodId);
    //~~~

と、CallStaticBooleanMethodに変えればOKです。

問題その2 BGMが鳴らない

もう一つ問題が発生しました。
SEは鳴っているのですが、BGMが再生されていませんでした。
こちらはすでにcocos2d-x公式で修正されておりました。
cocos2d-x github

こちらの
Cocos2dxMusic.java

自分のプロジェクトのorg/cocos2dx/lib/Cocos2dxMusic.java
に上書きまたは書き換えで無事にBGMが鳴るようになりました。
BGMの切り替わりも問題なく切り替わりました。

とりあえず以上

自分の対応はこれでひとまず完了となりました。
その他全体的に触ってみましたが、特に問題は無さそうです。
が、
が!
が!!!
ケース・バイ・ケースな所もあると思いますので、
あくまで参考程度にとどめて頂けると助かります。

41
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
41