Androidでも、新しいOSのバージョンが出ています。 色々と不具合が出ているアプリが多く対応が大変だと聞いていましたが、本日実際に試してみました。 今回は「Android 5.x Lolipop」の対応についてブログに書いていきたいと思います。
Android 5.x Lolipopに対応する
今回はcocos2dx3.3を利用したプロジェクトを使っています。
エラー : JNI DETECTED ERROR IN APPLICATION
[JNI DETECTED ERROR IN APPLICATION]と表示されるエラーが出てきました。 原因はJNIで利用をしているメソッドが利用できないからでした。 [c]
void hogehoge_jni(){
cocos2d::JniMethodInfo methodInfo;
if (!cocos2d::JniHelper::getStaticMethodInfo(methodInfo,CLASS_NAME,"hogehoge", "()V"))
{
return;
}
//CallStaticObjectMethodはAndroid 5.x Lolipopでは利用できない。
methodInfo.env->CallStaticObjectMethod(methodInfo.classID,methodInfo.methodID);
//CallStaticVoidMethodを利用する
methodInfo.env->CallStaticVoidMethod(methodInfo.classID,methodInfo.methodID);
}
[/c]
[CallStaticObjectMethod]がv5.xからは利用できないので、[CallStaticVoidMethod]へと書き換えるとエラーが消えました。
最後に
以上、1つのエラーが出ただけでビルドすることができるようになりました。 これは、cocos2dx3.3が「Android 5.x Lolipop」に対応しているバージョンだったからです。 もし、以前のバージョンを利用している場合、下記のサイトのようなエラーが出るかもしれません。
1つ気になる点はバックミュージックで、ルートする際に違和感がある感じがします。 音楽周りはバージョンにかかわらず改善をしていった欲しい点ですので、今後にcocos2dxのバージョンに期待をします。