我想在我的Android应用程序中使用AndroLua作为库。
除了Android 5.x(Lollipop)之外,Android版本上的一切都很顺利但如果我调用juajava.new lua函数,我的应用程序会在Lollipop下崩溃。 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>
我该如何解决这个问题? 或者有替代方法在Android中运行lua吗?
答案 0 :(得分:0)
https://github.com/jasonsantos/luajava/issues/10修正了错误:
调用luajava.new(...)会在Android ART上产生以下错误: A / art:art / runtime / java_vm_ext.cc:410] JNI检测到的错误 APPLICATION:无法调用static 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) - &gt; CallStaticIntMethod(javaEnv,clazz, method,(jint)stateIndex,classInstance); “clazz”不是对象 我们想要这里。它应该是:ret =(* javaEnv) - &gt; CallStaticIntMethod( javaEnv,luajava_api_class,方法,(jint)stateIndex, classInstance);
此外,我认为,第1371行:if(clazz == NULL || method == NULL) 应该是:if(luajava_api_class == NULL || method == NULL)
尼尔。