有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android上的libgdx GdxRuntimeException:无法加载目标的共享库“gdx”

我已经开发了一个Libgdx应用程序,并在我的三星galaxys3(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 安卓.app.Instrumentation.newActivity(Instrumentation.java:1068)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at 安卓.app.ActivityThread.access$700(ActivityThread.java:140)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at 安卓.os.Handler.dispatchMessage(Handler.java:99)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at 安卓.os.Looper.loop(Looper.java:137)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at 安卓.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.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
05-22 20:25:01.745: E/AndroidRuntime(12725):    at com.安卓.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.安卓.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

共 (3) 个答案

  1. # 1 楼答案

    当我试图将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),我发现了evileentity提供的这本优秀教程,它展示了如何将libGDX项目导入Android Studio:

    http://imgur.com/a/IBFIV

    我不能逐字重复教程,因为它包含文本和屏幕截图,但以下步骤允许我导入生成的项目,只需修改教程中列出的内容:

    请注意,我在这里重复EvileEntity的答案,因为它位于不同网站的不同论坛中,Stack overflow中有大量评论表明,在其他网站上简单地发布解决方案的链接是不好的

    还请注意,我在这里给出了这个答案,因为对我来说,关键是omarsafwany问题中包含的错误信息,而不是他问题的具体情况。希望没问题

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

    详情:

    • Android Studio版本:AI-130.737825(2013年7月11日)
    • JRE:1.7.0_25
    • libGDX:从2013年8月15日开始每晚构建
    • 安卓设备:谷歌Nexus 7
    • 由以下程序生成的项目:gdx setup ui。jar(从http://libgdx.badlogicgames.com/nightlies/下载)
  2. # 2 楼答案

    我知道问题出在哪里了。它只是在三星Galaxy S3开始工作,一些C++文件被加载,当我编辑了一些文件时,我没有使用NDK构建。因此,当尝试在另一部手机上进行测试时,新的修改没有得到应用。 我构建了它们,应用程序成功运行

  3. # 3 楼答案

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