Android NDK - 未找到库

标签 android android-ndk

我使用 Android Studio 和 Android NDK。 我的文件夹“src/main/jni”包含以下文件:

  • Android.mk
  • 应用程序.mk
  • HelloWorld.cpp

应用程序.mk APP_ABI := 全部

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)

您能帮忙解决这个问题吗?为什么我的原生库无法加载?我的配置有什么问题吗?

最佳答案

尝试:

static{
    System.loadLibrary("HelloWorld");
}

关于Android NDK - 未找到库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32767402/

相关文章:

android - 如何在 ViewHolder 中存储原始值?

android - 无法使用自动生成的后端 API 更新 appengine 后端中的实体

java - 使用NDK获取Object的指向内存地址

android - Make.exe 访问被拒绝

android - 使用 FFMpeg 通过 Android 解码音频

java - 如何在 OnTouchListener 中获取初始 X、Y 值(第一次触摸 ACTION_DOWN)

android - Mvvmcross:与安卓服务交互

android - 如何将额外的 Intent 传递给两个 Activity

android - 将 SQLite 添加到 Android NDK 项目

JNI 库的 Android Studio 项目