Couldn't load shared library 'gdx' for target

家住魔仙堡 提交于 2019-12-30 21:38:13

问题


I'm having the same issue as in this question, but the answers there doesn't solve my problem.

I didn't create project by gdxsetup.jar, I just included gdx.jar and gdx-backend-android.jar. I added the libgdx.so to libs/x86, but it stills throws an exception. How should I solve this?

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

If it helps, I'm running 32-bit Linux.


回答1:


The problem I had was that for some reason libgdx.so was not copied to any of the armeabi, armeabi-v7a or x86 folders in the android project's lib folder.

Copying these over from the libgdx distribution worked for me.




回答2:


My problem was that I was trying to make my GDX app within a shared library (aka, not the thing that gets compiled into an APK), but hadn't finished setting up all the GDX-including stuff in my lib.

So I had:

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

In the shared lib's build.gradle, I hadn't included the sourceSets parameter.

Adding it fixed my problem. GDX now starts up successfully.

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 ...
}



回答3:


I found out this is pretty simple : add

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


来源:https://stackoverflow.com/questions/21806778/couldnt-load-shared-library-gdx-for-target

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!