Android + Corona SDK:无法加载Lua。

我刚刚开始在真实设备上测试我的游戏(耶!),尽管它在 Corona 模拟器上完美运行,在实际设备上以及模拟器上每次打开时却会出现“抱歉!应用程序 SampleApp(进程 com.foo.bar.SampleApp)突然停止。请重试。”我打开了 adb logcat,发现我得到了以下错误:

I / ActivityThread(1264):发布 com.foo.bar.SampleApp.files:com.ansca.corona.storage.FileContentProvider
W / dalvikvm(1264):抛出 Ljava/lang/UnsatisfiedLinkError 异常;在初始化 Lcom/ansca/corona/JavaToNativeShim 时抛出;
W / dalvikvm(1264):抛出 Ljava/lang/ExceptionInInitializerError 异常;在初始化 Lcom/ansca/corona/CoronaEnvironment 时抛出;
D / AndroidRuntime(1264):关闭 VM
W / dalvikvm(1264):threadid = 1:thread 正在退出,抛出未捕获的异常(group = 0x40020560)
E / AndroidRuntime(1264):致命异常:主
E / AndroidRuntime(1264):java.lang.ExceptionInInitializerError
E / AndroidRuntime(1264):在 com.ansca.corona.CoronaView.deleteTempDirectory(CoronaView.java:141)中
E / AndroidRuntime(1264):在 com.ansca.corona.CoronaActivity.onCreate(CoronaActivity.java:101)中
E / AndroidRuntime(1264):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)中
E / AndroidRuntime(1264):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1618) 中
E / AndroidRuntime(1264):在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1670) 中
E / AndroidRuntime(1264):在 android.app.ActivityThread.access$1500(ActivityThread.java:117) 中
E / AndroidRuntime(1264):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 中
E / AndroidRuntime(1264):在 android.os.Handler.dispatchMessage(Handler.java:99) 中
E / AndroidRuntime(1264):在 android.os.Looper.loop(Looper.java:130) 中
E / AndroidRuntime(1264):在 android.app.ActivityThread.main(ActivityThread.java:3695) 中
E / AndroidRuntime(1264):在 java.lang.reflect.Method.invokeNative(Native Method) 中
E / AndroidRuntime(1264):在 java.lang.reflect.Method.invoke(Method.java:507) 中
E / AndroidRuntime(1264):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 中
E / AndroidRuntime(1264):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 中
E / AndroidRuntime(1264):在 dalvik.system.NativeStart.main(Native Method) 中
E / AndroidRuntime(1264):被 java.lang.ExceptionInInitializerError 异常 caused by
E / AndroidRuntime(1264):在 com.ansca.corona.CoronaEnvironment.setLuaErrorHandler(CoronaEnvironment.java:379) 中
E / AndroidRuntime(1264):在 com.ansca.corona.CoronaEnvironment.<clinit>(CoronaEnvironment.java:41) 中
E / AndroidRuntime(1264):更多的引起异常
E / AndroidRuntime(1264):由于 java.lang.UnsatisfiedLinkError 异常 caused by
E / AndroidRuntime(1264):无法加载 lua:findLibrary 返回 null
E / AndroidRuntime(1264):在 java.lang.Runtime.loadLibrary(Runtime.java:429) 中
E / AndroidRuntime(1264):在 java.lang.System.loadLibrary(System.java:554) 中
E / AndroidRuntime(1264):在 com.ansca.corona.JavaToNativeShim.<clinit>(JavaToNativeShim.java:118) 中
E / AndroidRuntime(1264):更多的引起异常
W / ActivityManager(146):强制完成活动 com.foo.bar.SampleApp/com.ansca.corona.CoronaActivity

当然,真正的进程名称不是“com.foo.bar.SampleApp”,但本质相同。

我有一台旧的 Android 设备,所以可能是问题所在,但我真的希望不是。我使用的是 Huawei-U8652,Android 版本为 2.3.5。我还构建了一个 Corona 示例代码应用程序,在出现相同错误的情况下也是如此。

点赞
用户869951
用户869951

错误就是找不到 Lua,这太极端了。 在 Corona Sim 上可以工作,但在真实设备或基于 Eclipse 的模拟器上无法工作。 在你能够使其在真实设备上工作之前,没有必要使用模拟器,因为它对于 Corona 来说太过未知了。尝试以下步骤:

  1. 验证 Corona 的例子在你的设备上是否能够正常工作
  2. 如果可以正常工作,就在这些例子中添加你的 main.lua 中的一些部分;也许在某个时候会再次出现错误,这样你就可以标识出一个损坏了内存并发送所有 wally 的特定 lib 调用。
  3. 添加应用程序的其他部分(如果在启动时导入模块),直到再次出现错误。
2014-02-24 22:04:14