【问题标题】:GdxRuntimeException on Android: couldn't load shared library 'gdx' for targetAndroid 上的 GdxRuntimeException:无法为目标加载共享库“gdx”
【发布时间】:2013-05-17 21:27:14
【问题描述】:

我开发了一个 Libgdx 应用程序,并在我的三星 Galaxy S3(4.1.2) 上对其进行了测试,它运行良好。我试图在 Galaxy Grand(4.1.2) 上对其进行测试,但失败了。在logcat中,我发现了以下内容:

caused by com.badlogic.gdx.utils.GdxRuntimeException couldn't load shared library 'gdx' for target: Linux, 32-bit

这只是在更换设备时发生的,所以知道是什么原因吗?!

完整的logcat:

05-22 20:25:01.745: E/AndroidRuntime(12725): FATAL EXCEPTION: main
05-22 20:25:01.745: E/AndroidRuntime(12725): java.lang.ExceptionInInitializerError
05-22 20:25:01.745: E/AndroidRuntime(12725):    at java.lang.Class.newInstanceImpl(Native Method)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at java.lang.Class.newInstance(Class.java:1319)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at android.app.ActivityThread.access$700(ActivityThread.java:140)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at android.os.Looper.loop(Looper.java:137)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at android.app.ActivityThread.main(ActivityThread.java:4935)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at java.lang.reflect.Method.invokeNative(Native Method)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at java.lang.reflect.Method.invoke(Method.java:511)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at dalvik.system.NativeStart.main(Native Method)
05-22 20:25:01.745: E/AndroidRuntime(12725): Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load shared library 'gdx' for target: Linux, 32-bit
05-22 20:25:01.745: E/AndroidRuntime(12725):    at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:104)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at com.badlogic.gdx.utils.GdxNativesLoader.load(GdxNativesLoader.java:34)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at com.badlogic.gdx.backends.android.AndroidApplication.<clinit>(AndroidApplication.java:61)
05-22 20:25:01.745: E/AndroidRuntime(12725):    ... 15 more
05-22 20:25:01.745: E/AndroidRuntime(12725): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load gdx: findLibrary returned null
05-22 20:25:01.745: E/AndroidRuntime(12725):    at java.lang.Runtime.loadLibrary(Runtime.java:365)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at java.lang.System.loadLibrary(System.java:535)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:100)
05-22 20:25:01.745: E/AndroidRuntime(12725):    ... 17 more

【问题讨论】:

  • 您是否有完整的堆栈跟踪以及任何“由”异常引起的?
  • 另外,您使用的是哪个版本的 libgdx?
  • 我已经添加了完整的 logcat
  • 啊,好吧,没有明显的问题……本机库被提取到设备上的临时空间。可能你的电量不足吗?
  • 运行不足是什么意思?!

标签: android libgdx runtimeexception


【解决方案1】:

从设备上完全卸载我的应用程序并再次部署它。这样就解决了问题

【讨论】:

  • 是的,我遇到了同样的问题,重新安装应用程序正常
【解决方案2】:

当我尝试将 libGDX 生成的项目加载到 Android Studio 中时,我收到了与原始帖子完全相同的错误:

> "caused by com.badlogic.gdx.utils.GdxRuntimeException couldn't load
> shared library 'gdx' for target: Linux, 32-bit"

经过一番研究(特别是 www.badlogicgames.com/forum/viewtopic.php?f=11&t=9097),我发现 evilEntity 的这篇优秀教程展示了如何导入 libGDX 项目进入 Android Studio:

http://imgur.com/a/IBFIV.

我不能逐字重复教程,因为它既是文本又是屏幕截图,但按照这些步骤,我可以导入生成的项目,只需要教程中列出的修改:

请注意,我在这里重复 evilentity 的回答,因为它在不同站点的不同论坛中,并且 Stack 溢出中有大量 cmets 表明在其他站点上简单地发布解决方案的链接是不好的形式。强>

还请注意,我在此处包含此答案,因为 omarsafwany 的问题中包含的错误消息对我来说是关键点,而不是围绕他的问题的具体情况。希望没关系。

  1. 导入项目:
    • 选择包含所有三个生成项目(共享、桌面、android)的顶级文件夹
    • 选择“从现有来源创建项目”
    • 重命名三个库(libs = LibGDX-Desktop、libs1 = LibDGX-Android、libs2 = LibDGX-Shared)
    • 接受剩余的默认设置并点击“完成”
    • 这三个项目都应该出现在您的项目浏览器中。
  2. 导出共享库
    • 右键单击共享模块并选择“打开模块设置”
    • 转到共享模块并选择 libgdx 共享库旁边的“导出”
    • 转到 android 模块并将共享模块添加为依赖项(通过单击绿色 +)
    • 转到桌面模块并将共享模块添加为依赖项(通过单击绿色 +)
  3. 编辑 Android 运行配置
    • 通过将“-android”添加到现有名称的末尾来重命名 android 配置
    • 在“目标设备”中选择“显示选择器对话框”
  4. 添加桌面运行配置
    • 点击绿色+并选择“应用程序”
    • 在顶部给它起个名字,然后单击“主类”字段旁边的...。在对话框中选择项目并找到桌面启动器的主类。点击确定。
    • 现在我们需要更改工作目录。点击 ... 并从文件夹视图中选择 android starter 的 assets 文件夹。没有它,桌面启动器将无法找到运行所需的图像和其他内容。
    • 最后要做的是选择类路径。选择桌面模块。点击确定。

详情:

  • Android Studio 版本:AI-130.737825(2013 年 7 月 11 日)
  • JRE:1.7.0_25
  • libGDX:从 2013 年 8 月 15 日开始每晚构建
  • Android 设备:Google Nexus 7
  • 项目生成:gdx-setup-ui.jar(从http://libgdx.badlogicgames.com/nightlies/下载)

【讨论】:

    【解决方案3】:

    我发现了问题所在。它从一开始就只在三星 Galaxy S3 上工作,加载了一些 C++ 文件,当我编辑其中一些文件时,我没有使用 ndk 构建。所以在尝试测试时在另一部手机上,没有应用新的修改。 我构建了它们并且应用程序成功运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 2013-05-10
      相关资源
      最近更新 更多