【发布时间】: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