1

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

4

1 回答 1

0

https://github.com/jasonsantos/luajava/issues/10修复了该错误:

调用 luajava.new(...) 在 Android ART 上产生以下错误:A/art: art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: can't call static int org.keplerproject.luajava.LuaJavaAPI .javaNew(int, java.lang.Class) with class java.lang.Class A/art: art/runtime/java_vm_ext.cc:410] 在调用 CallStaticIntMethod

经过一些代码审查,我发现了问题所在。在 luajava.c 中,第 1377 行: ret = ( *javaEnv )->CallStaticIntMethod( javaEnv , clazz , method , (jint)stateIndex , classInstance ); “clazz”不是我们想要的对象。它应该是: ret = ( *javaEnv )->CallStaticIntMethod( javaEnv , luajava_api_class , method , (jint)stateIndex , classInstance );

此外,我认为,第 1371 行: if ( clazz == NULL || method == NULL ) 应该是: if ( luajava_api_class == NULL || method == NULL )

尼尔。

于 2017-12-20T08:40:08.850 回答