2015-10-23 3 views
0

Я пытаюсь использовать Android NDK. В качестве первого шага я пытаюсь сделать то же самое, что и hello-jni из образцов Android. Я создал jni папку по проекту и поместил hello-jni.c, Android.mk, Application.mk. Я построил файл c, используя ndk-build. Он создавал и помещал файлы .so в каталог libs и пару файлов arm *. Но когда я использовалfindLibrary возвращается null Android NDK

static { 
     System.loadLibrary("hello-jni"); 
    } 

в рамках моей деятельности, я получаю

10-22 22:58:12.248 2291-2291/? E/AndroidRuntime: java.lang.UnsatisfiedLinkError: Couldn't load hello-jni from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.clinicloud.app.ndktestapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.clinicloud.app.ndktestapp-1, /system/lib]]]: findLibrary returned null 
10-22 22:58:12.248 2291-2291/? E/AndroidRuntime:  at java.lang.Runtime.loadLibrary(Runtime.java:355) 
10-22 22:58:12.248 2291-2291/? E/AndroidRuntime:  at java.lang.System.loadLibrary(System.java:525) 
10-22 22:58:12.248 2291-2291/? E/AndroidRuntime:  at com.clinicloud.app.ndktestapp.MainActivity.<clinit>(MainActivity.java:56) 
10-22 22:58:12.248 2291-2291/? E/AndroidRuntime:  at java.lang.Class.newInstanceImpl(Native Method) 

Мои Android.mk Файл

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_MODULE := hello-jni 
LOCAL_SRC_FILES := hello-jni.c 
include $(BUILD_SHARED_LIBRARY) 

Мой Application.mk файл включает в себя,

APP_ABI := all 

. Файлы .so называются libhello-jni.so

Может кто-нибудь помочь мне исправить это? Благодарю.

UPDATE

Я исправил эту проблему, поместив ниже код в моем build.gradle.

sourceSets.main { 
     jniLibs.srcDir 'libs' 
    } 
+0

Убедитесь, что libhello-jni.so скомпилирован и помещен под/libs/[ARCH] в ваш проект. Вы также можете распаковать свой apk и посмотреть, есть ли библиотека – Krypton

+1

Спасибо @krypton. Я мог обнаружить, что библиотека не была включена в файл apk. Затем я исправил проблему с конфигурацией каталога gradle libs. – User

+0

Нет проблем, тогда я переведу комментарий. – Krypton

ответ

0

Убедитесь, что libhello-jni.so скомпилирован и помещен под/libs/[ARCH] в ваш проект. Вы также можете разархивировать свой apk и посмотреть, есть ли библиотека.