AndroLua на Lollipop: JNI ОБНАРУЖИЛА ОШИБКУ В ПРИЛОЖЕНИИ: невозможно вызвать статическое int org.keplerproject.luajava.LuaJavaAPI.javaNew(int, java.lang.Class)
Я хочу использовать AndroLua в качестве библиотеки в моем приложении для Android.
На Android версии все идет хорошо, кроме Android 5.x (Lollipop)
Но мое приложение зависло под Lollipop, если я вызвал функцию lua juajava.new. LogCat показывает
JNI DETECTED ERROR IN APPLICATION: can't call static int org.keplerproject.luajava.LuaJavaAPI.javaNew(int, java.lang.Class) on class java.lang.Class<java.lang.Class>
Как я могу решить проблему? Или есть альтернатива для запуска lua в Android?
1 ответ
https://github.com/jasonsantos/luajava/issues/10 исправляет ошибку:
При вызове luajava.new(...) в Android ART возникает следующая ошибка: A/art: art/runtime/java_vm_ext.cc:410] JNI ОБНАРУЖЕНА ОШИБКА В ПРИЛОЖЕНИИ: невозможно вызвать статический int org.keplerproject.luajava.LuaJavaAPI.javaNew(int, java.lang.Class) с классом java.lang.Class A/art: art/runtime/java_vm_ext.cc:410] при вызове CallStaticIntMethod
После некоторой проверки кода я понял проблему. В luajava.c, строка 1377: ret = ( *javaEnv)->CallStaticIntMethod( javaEnv, clazz, метод, (jint)stateIndex, classInstance); "Clazz" не тот объект, который мы хотим здесь. Должно быть: ret = ( *javaEnv)->CallStaticIntMethod( javaEnv, luajava_api_class, метод, (jint) stateIndex, classInstance);
Более того, я думаю, строка 1371: if ( clazz == NULL || method == NULL) должна быть: if ( luajava_api_class == NULL || method == NULL)
Нир.