2015-09-04 2 views
1

Я хочу использовать AndroLua в качестве библиотеки в своем приложении для Android.AndroLua on Lollipop: JNI DETECTED ERROR IN APPLICATION: не может вызвать статический int org.keplerproject.luajava.LuaJavaAPI.javaNew (int, java.lang.Class)

Все идет хорошо на Android версии кроме Android 5.x (Lollipop)

Но мое приложение разбился под леденец, если я позвоню juajava.new функцию Lua. 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?

+0

Я отказываюсь от функции luajava.new. Вместо этого создайте новый объект в java и верните новый созданный объект в lua. – WeiHung

ответ

0
https://github.com/jasonsantos/luajava/issues/10

исправляет ошибку:

Вызов luajava.new (...) производят следующее сообщение об ошибке на Android ART: А/искусство: искусство/среда/java_vm_ext.cc: 410] JNI обнаруженная ошибка IN ПРИМЕНЕНИЕ: не может вызвать статический 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);

Кроме того, по-моему, линия тысяча триста семьдесят один: если (clazz == NULL, метод || == NULL) должно быть: если (luajava_api_class == NULL || Метод == NULL)

Nir.