Android上的GdxRuntimeException:无法为目标加载共享库'gdx'

时间:2013-05-22 17:43:41

标签: android libgdx runtimeexception

我开发了一个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

3 个答案:

答案 0 :(得分:5)

当我尝试将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溢出中有大量注释表明简单地将链接发布到其他网站上的解决方案是不好的。

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

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

    • 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/下载)

答案 1 :(得分:3)

完全从设备中卸载我的应用并再次部署。这解决了问题

答案 2 :(得分:2)

我弄清楚问题是什么。它从一开始只在三星Galaxy S3上工作,加载了一些C ++文件,当我编辑其中一些文件时,我在尝试测试时没有使用ndk.So构建在另一个手机上,新的修改没有应用。 我构建了它们,应用程序运行成功。