2014-02-16 105 views
4

我遇到与this question相同的问题,但那里的答案并未解决我的问题。无法为目标加载共享库'gdx'

我没有通过gdxsetup.jar创建项目,我只包含了gdx.jar和gdx-backend-android.jar。我将libgdx.so添加到libs/x86,但它仍然引发异常。我应该如何解决这个问题?

的logcat:

02-16 11:59:45.604: E/AndroidRuntime(14788): FATAL EXCEPTION: main 
02-16 11:59:45.604: E/AndroidRuntime(14788): java.lang.ExceptionInInitializerError 
02-16 11:59:45.604: E/AndroidRuntime(14788): at java.lang.Class.newInstanceImpl(Native Method) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at java.lang.Class.newInstance(Class.java:1130) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at android.app.Instrumentation.newActivity(Instrumentation.java:1078) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2210) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at android.app.ActivityThread.access$700(ActivityThread.java:159) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at android.os.Looper.loop(Looper.java:176) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at android.app.ActivityThread.main(ActivityThread.java:5419) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at java.lang.reflect.Method.invokeNative(Native Method) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at java.lang.reflect.Method.invoke(Method.java:525) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at dalvik.system.NativeStart.main(Native Method) 
02-16 11:59:45.604: E/AndroidRuntime(14788): Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load shared library 'gdx' for target: Linux, 32-bit 
02-16 11:59:45.604: E/AndroidRuntime(14788): at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:114) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at com.badlogic.gdx.utils.GdxNativesLoader.load(GdxNativesLoader.java:34) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at com.badlogic.gdx.backends.android.AndroidApplication.<clinit>(AndroidApplication.java:62) 
02-16 11:59:45.604: E/AndroidRuntime(14788): ... 15 more 
02-16 11:59:45.604: E/AndroidRuntime(14788): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load gdx from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.gamr-1.apk,libraryPath=/data/app-lib/com.example.gamr-1]: findLibrary returned null 
02-16 11:59:45.604: E/AndroidRuntime(14788): at java.lang.Runtime.loadLibrary(Runtime.java:355) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at java.lang.System.loadLibrary(System.java:525) 
02-16 11:59:45.604: E/AndroidRuntime(14788): at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:110) 
02-16 11:59:45.604: E/AndroidRuntime(14788): ... 17 more 

如果有帮助,我运行32位Linux。

+0

请包含来自logcat的完整堆栈跟踪(这是在Android上的,对吗?)。它将(希望)包含有关问题原因的更多细节。 –

+0

我添加了Logcat,但我不知道如何设计它:( –

+1

只是加载所需的共享库,这就是问题所在,loadLibrary(String libname);'libname应该没有'lib'和'。所以' – mangusta

回答

-1

我发现这是非常简单的: 添加

static { System.loadLibrary("gdx");} 
+0

这是否真的有用? – Lestat

+0

这个答案好像只会让其他用户感到困惑(我现在不怀疑你的应用程序有效,但它可能不是解决这个问题的正确方法)本手册的'loadLibrary'调用应该与LibGDX SharedLibraryLoader的功能是多余的。你是否也在'APK中添加了'armeabi/libgdx.so'?(你的Android设备是ARM还是x86? ) –

+0

我这么认为,相当多余,但我仍然需要加载,我已经添加,但仍然无法加载。 –

8

我的问题是,由于某种原因libgdx.so未被复制到任何armeabiarmeabi-v7ax86文件夹中的Android项目的lib文件夹。

从libgdx发行版拷贝这些文件对我很有帮助。

+0

哪里是libgdx发行版? –

+0

这太奇怪了。不知何故,.so文件被删除,虽然我没有触摸该项目数月。复制他们回来帮助。谢谢 – Michael

2

我的问题是,我试图让我的GDX应用程序在一个共享库(又名,不是被编译成APK的东西),但还没有完成设置所有的GDX,包括我的库中的东西。

所以我不得不:

MyProject 
-->MyMainApp 
-->-->build.gradle <-- no updates required, doesn't do anything with GDX 
-->MySharedLibraryWhereMyGameEngineIs 
-->-->build.gradle <-- this is where the problem was 

在共享库的的build.gradle,我已经不包括sourceSets参数。

添加它解决了我的问题。 GDX现在成功启动。

apply plugin: 'com.android.library' 
android { 
    ... config stuff ... 

    sourceSets {      // this wasn't here before 
     main {       // this wasn't here before 
      jniLibs.srcDirs = ['libs'] // this wasn't here before 
     }        // this wasn't here before 
     instrumentTest.setRoot('tests')// this wasn't here before 
    }  

    ... a bunch of other config stuff ... 
} 
相关问题