java.lang.UnsatisfiedLinkError 在使用 AndEngine Physics Extension

java.lang.UnsatisfiedLinkError at using AndEngine Physics Extension

我使用了 Andengine GLES Version1 和 AndenginePhysicsExtension..

我最近将 eclipse 项目转换为 Android Studio 并删除了所有错误,最后 运行 应用程序。

砰的一声,我遇到了这个错误..!!

java.lang.UnsatisfiedLinkError:

09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime: FATAL EXCEPTION: main
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime: Process: com.spec.friskycatch, PID: 1012
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.spec.friskycatch-2/base.apk"],nativeLibraryDirectories=[/data/app/com.spec.friskycatch-2/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libandenginephysicsbox2dextension.so"
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at java.lang.Runtime.loadLibrary(Runtime.java:367)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at java.lang.System.loadLibrary(System.java:1076)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at org.anddev.andengine.extension.physics.box2d.PhysicsWorld.<clinit>(PhysicsWorld.java:35)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at com.spec.friskycatch.view.game.FriskyGameActivity.onLoadScene(FriskyGameActivity.java:283)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at com.spec.friskycatch.view.game.FriskyGameActivity.onComplete(FriskyGameActivity.java:263)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at com.spec.friskycatch.service.sprites.AsyncTaskLoader.onPostExecute(AsyncTaskLoader.java:31)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at com.spec.friskycatch.service.sprites.AsyncTaskLoader.onPostExecute(AsyncTaskLoader.java:5)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at android.os.AsyncTask.finish(AsyncTask.java:651)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at android.os.AsyncTask.-wrap1(AsyncTask.java)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:148)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5417)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
09-29 16:04:31.292 1012-1012/com.spec.friskycatch E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

如何解决?

已编辑:添加了 build.gradle 文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "package"
        minSdkVersion 10
        targetSdkVersion 23
        // Enable MultiDexing:  https://developer.android.com/tools/building/multidex.html
        multiDexEnabled true
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
    }

    sourceSets {
        main {
            jni.srcDirs = []
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile files('libs/FLurry_3.2.2.jar')
    compile files('libs/pixel-perfect-collision.jar')
    compile files('libs/twitter4j-core-3.0.3.jar')
    compile project(':zip_file')
    compile project(':andEngine')
    compile project(':downloader_library')
    compile project(':viewPagerLibrary')
    compile project(':com_google_android_vending_licensing')
    compile project(':physics')
    compile 'com.android.support:support-v4:23.0.1'
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'org.apache.commons:commons-lang3:3.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.google.android.gms:play-services-ads:8.1.0'
    compile 'com.google.android.gms:play-services-identity:8.1.0'
    compile 'com.google.android.gms:play-services-gcm:8.1.0'
}

已编辑:

我在这里添加物理扩展的文件层次结构:

但是我没有像下面这样的结构:

|--app:
|--|--src:
|--|--|--main
|--|--|--|--jniLibs
|--|--|--|--|--armeabi
|--|--|--|--|--|—andEnginePhysicsBox2DExtension.so
|--|--|--|--|--X86
|--|--|--|--|--|--andEnginePhysicsBox2DExtension.so

我也在项目中搜索过这个文件andEnginePhysicsBox2DExtension.so,但找不到。

感谢任何帮助..!!

谢谢

检查此 post:HOW TO SETUP ANDENGINE WITH ANDROID STUDIO。您可能没有正确添加 Andengine 的原生库(libandenginephysicsbox2dextension.so)

从您的 gradle 文件中删除此部分:

sourceSets {
    main {
        jni.srcDirs = []
    }
}

然后复制libandenginephysicsbox2dextension.so到jniLib文件夹。您的文件夹应与此类似:

|--app:
|--|--src:
|--|--|--main
|--|--|--|--jniLibs
|--|--|--|--|--armeabi
|--|--|--|--|--|—andEnginePhysicsBox2DExtension.so
|--|--|--|--|--X86
|--|--|--|--|--|--andEnginePhysicsBox2DExtension.so
...