4

我正在尝试在 Android M 开发预览版上测试我的应用程序。

我的应用程序正在使用一个共享库,我将它放在 Android Studio 内的 jni/libs/armeabi 中。我相信当它调用System.loadLibrary("myLib")它时会抛出以下 UnsatisfiedLinkError。还有其他人有这个问题吗?Android 5.x 对此没有任何问题。

06-02 08:24:28.004  16505-16505/com.me.workflow E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.me.workflow, PID: 16505
    java.lang.UnsatisfiedLinkError: dlopen failed: library "{Path}/Android/Workflow/mobile/src/main//obj/local/armeabi/myLib.so" not found
            at java.lang.Runtime.loadLibrary(Runtime.java:368)
            at java.lang.System.loadLibrary(System.java:1076)
            at com.me.workflow.service.WorkflowService.<clinit>(WorkflowService.java:108)
            at com.me.workflow.activities.BaseServiceActivity.startWorkflowService(BaseServiceActivity.java:501)
            at com.me.workflow.activities.WelcomeActivity.deployAndroidSetup(WelcomeActivity.java:639)
            at com.me.workflow.activities.WelcomeActivity.onFileOperationCompleted(WelcomeActivity.java:842)
            at com.me.workflow.tasks.CopyFromAssets.onPostExecute(CopyFromAssets.java:76)
            at com.me.workflow.tasks.CopyFromAssets.onPostExecute(CopyFromAssets.java:42)
            at android.os.AsyncTask.finish(AsyncTask.java:649)
            at android.os.AsyncTask.-wrap1(AsyncTask.java)
            at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:666)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:148)
            at android.app.ActivityThread.main(ActivityThread.java:5401)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:725)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)

更新:

我收到了一些关于这个问题的反馈。在我的 Android.mk 文件中,我有以下行,目前认为该路径不正确并且因此找不到该文件。

LOCAL_SRC_FILES    := libs/$(TARGET_ARCH_ABI)/myLib.so

https://code.google.com/p/android-developer-preview/issues/detail?id=2239

4

1 回答 1

4

我解决了我的问题,确保我的库的预构建有一个 soname 集。请参阅以下 Android Developer Preview 问题线程

https://code.google.com/p/android-developer-preview/issues/detail?id=2239

线程中的项目编号 10 谈到我的预建需要设置 soname,这是我以前没有的。

所以在我的库构建脚本中,我将 -Wl,-soname,lib{mylibname}.so 添加到了我的 LDFLAGS 变量中

export LDFLAGS="--sysroot ${TOOL_PREFIX}/sysroot -L${PREFIX}/lib -L${TOOL_PREFIX}/lib ${LDFLAGS_EXTRA} -Wl,-soname,libmylib1.0.so"
于 2015-06-27T01:33:06.070 回答