Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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の切り替わりも問題なく切り替わりました。

とりあえず以上

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

kuuki_yomenaio
元々サーバサイドを得意としていますが、 クライアントもやります。 ゲーム開発のお仕事をしています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした