【发布时间】:2015-09-24 17:24:35
【问题描述】:
我使用 Android Studio 和 Android NDK。 我的文件夹“src/main/jni”包含以下文件:
- Android.mk
- Application.mk
- HelloWorld.cpp
应用程序.mk
APP_ABI := all
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorld
LOCAL_SRC_FILES := HelloWorld.cpp
include $(BUILD_SHARED_LIBRARY)
在我的 Java 代码中,我加载了库:
static{
System.load("HelloWorld");
}
我运行 ndk-build 如下,它运行没有错误:ndk-build -C src/main
build.gradle 包含:
sourceSets.main {
jniLibs.srcDirs 'src/main/libs'
jni.srcDirs = [] //disable automatic ndk-build call
}
libHelloWorld.so 编译后复制到文件夹:app\src\main\libs\arm*\
app-debug.apk 的根目录包含一个 lib 目录。 libHelloWorld.so 存在于所有子目录中(lib\arm*)
当我在 LG Nexus 4 设备上部署和调试应用程序时,我收到以下错误:
9-24 18:50:51.486 20352-20352/ndk.tests.firstndk E/art﹕ dlopen("HelloWorld", RTLD_LAZY) failed: dlopen failed: library "HelloWorld" not found
09-24 18:50:51.489 20352-20352/ndk.tests.firstndk D/AndroidRuntime﹕ Shutting down VM
09-24 18:50:51.491 20352-20352/ndk.tests.firstndk E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: ndk.tests.firstndk, PID: 20352
java.lang.UnsatisfiedLinkError: dlopen failed: library "HelloWorld" not found
at java.lang.Runtime.load(Runtime.java:331)
at java.lang.System.load(System.java:981)
at ndk.tests.firstndk.MainActivity.<clinit>(MainActivity.java:11)
at java.lang.reflect.Constructor.newInstance(Native Method)
您能帮忙解决这个问题吗?为什么我的本机库无法加载?我的配置有什么问题?
【问题讨论】:
标签: android android-ndk