【问题标题】:java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "srand" referenced by "xx.so"java.lang.UnsatisfiedLinkError:dlopen 失败:找不到“xx.so”引用的符号“srand”
【发布时间】:2017-02-19 12:11:27
【问题描述】:

我是 NDK 开发的新手。我使用 NDK 生成 xxx.so 文件,它在 Android 5.0 或更高版本上运行良好,但在 Android 4.4 或更高版本上崩溃。

日志是:

java.lang.UnsatisfiedLinkError: dlopen failed: 找不到“xx.so”引用的符号“srand”... 在 java.lang.Runtime.loadLibrary(Runtime.java:362) 在 java.lang.System.loadLibrary(System.java:525) 在 com.uniquestudio.lowpoly.LowPoly.(LowPoly.java:14) 在 com.uniquestudio.lowpolyandroid.MainActivity.onCreate(MainActivity.java:22) 在 android.app.Activity.performCreate(Activity.java:5372) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 在 android.app.ActivityThread.access$700(ActivityThread.java:159) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:5419) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 在 dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

标签: java android android-ndk


【解决方案1】:

正如 Dan 在 cmets 中指出的那样,您的问题肯定来自针对 android api 级别 >=21 的编译。

要解决您的问题,您可以针对与 APK 的 minSdkVersion 相同的平台编译代码。

您如何使用 NDK?如果您使用 ndk-build,请在 Android.mk 文件旁边添加一个 Application.mk 文件,内容为 APP_PLATFORM:=android-14 (其中 14 是您的 minSdkVersion)。

【讨论】:

    猜你喜欢
    • 2017-02-19
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2015-04-28
    • 1970-01-01
    • 2019-02-04
    • 2017-04-11
    相关资源
    最近更新 更多