AndroLua on Lollipop:JNI DETECTED ERROR IN APPLICATION:无法调用static int org.keplerproject.luajava.LuaJavaAPI.javaNew(int,java.lang.Class)

时间:2015-09-04 14:26:24

标签: android lua luajava

我想在我的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吗?

1 个答案:

答案 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)

     

尼尔。