【问题标题】:UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memcpy4" referenced byUnsatisfiedLinkError: dlopen failed: 找不到符号“__aeabi_memcpy4”引用
【发布时间】:2017-03-21 00:15:13
【问题描述】:

我刚刚从 NDK 12.x 更新到 13.x,现在我遇到了以下崩溃:

Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memcpy4" referenced by "/data/app/com.app.myapp-1/lib/arm/libJniBitmapOperationsLibrary.so"...
  at java.lang.Runtime.loadLibrary(Runtime.java:372)
  at java.lang.System.loadLibrary(System.java:1076)
  at com.jni.bitmap_operations.JniBitmapHolder.<clinit>(JniBitmapHolder.java:11)
  <...>

我正在使用的库是可用的here

我在 SO 上看到了一些与cannot locate symbol 相关的类似问题,所有建议都围绕在Application.mk 文件中设置APP_PLATFORM。我的 JNI 库是 SDK 的一部分,所以我没有 Application.mk 文件 - 只有 Android.mk。我的目标/最小 sdk 最近也没有改变。我的Android.mk 文件是从库中复制的,如下所示:

LOCAL_PATH := $(call my-dir)

#bitmap operations module
include $(CLEAR_VARS)

LOCAL_MODULE    := JniBitmapOperationsLibrary
LOCAL_SRC_FILES := JniBitmapOperationsLibrary.cpp
LOCAL_LDLIBS := -llog
LOCAL_LDFLAGS += -ljnigraphics

include $(BUILD_SHARED_LIBRARY)
APP_OPTIM := debug
LOCAL_CFLAGS := -g

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    好的,我想我已经在JNI and Gradle in Android StudioAndroid NDK : Getting java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "signal" referenced by "libffmpeg.so" 的帮助下找到了答案

    我的解决方案是执行以下操作:

    1) 添加Application.mk 文件,内容如下:

    APP_CFLAGS += -I$(LOCAL_PATH)  
    APP_ABI := all  
    APP_PLATFORM := android-19 
    

    2) 更新我的build.gradle 以指向我的Application.mk,因为显然 gradle 创建了自己的Android.mk 版本,并默认使用与compileSdkVersion 相同的api 级别而不是minSdkVersion

    对于com.android.tools.build:gradle:2.2.0,这可以通过添加以下内容来实现(有关更多详细信息,请查看上面提到的 JNI SO 帖子):

    externalNativeBuild {
        ndkBuild {
            path 'src/main/jni/Application.mk'
        }
    }
    

    另外,你可能不需要第一步和第二步,但我已经花了太多时间来验证

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多