2015-09-24 3 views
1

Я работаю с Android Studio и Android NDK. Моя папка "SRC/основные/JNI" содержит следующие файлы:Android NDK - Библиотека не найдена

  • Android.mk
  • Application.mk
  • helloworld.cpp

Application.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 -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 \ рука *)

Когда я разворачивать и отлаживать приложения на 4 устройства LG Nexus, я получаю следующее сообщение об ошибке:

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) 

Не могли бы вы помочь решить эту проблему? Почему моя родная библиотека не может быть загружена? Что не так с моей конфигурацией?

ответ

3

попробовать:

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

Спасибо, что работает! Такое долгое время тратилось на такую ​​небольшую ошибку ... Большое вам спасибо! – ltu

+0

добро пожаловать :) –

Смежные вопросы