2017-06-05 4 views
0

Je reçois actuellement l'erreur suivante:Comment ajouter une bibliothèque native (.so) au studio android?

java.lang.UnsatisfiedLinkError: nativeLibraryDirectories=[/data/app/com.example.ryane.jzy-1/lib/arm, /vendor/lib, /system/lib] couldn't find "libgluegen-rt.so" 

Tout en effectuant la ligne de code suivante

System.loadLibrary("gluegen-rt"); 

J'ai inclus les éléments suivants dans mon build.gradle

sourceSets { 
    main { 
     jniLibs.srcDirs = ["src/main/jniLibs", "$buildDir/native-libs"] 
    } 
} 

Et J'ai placé mon libgluegen.so dans src/main/jniLibs. Selon l'erreur, il semble que cela ne regarde pas dans le répertoire que j'ai spécifié. Y a-t-il des étapes qui me manquent?

+0

Essayez d'ajouter 'jni.srcDirs = []' à '' build.gradle' sourceSets.main' –

+0

Malheureusement, je dois toujours la même erreur. J'ai lu et remarqué beaucoup de gens mentionnant les fichiers .mk lors de l'utilisation de bibliothèques natives. Sont-ils nécessaires? @RustFisher –

+0

Le fichier '.mk' signifie que vous compilez' .so' par vous-même. Alors as-tu une lib native (comme des fichiers C/C++) dans ton projet ou juste des fichiers '.so'? Vous devez compiler les fichiers source C/C++ en utilisant les outils NDK. –

Répondre

1

Hmm ... En fait, je veux voir ton chemin .so ...
Et par exemple, dans mon build.gradle jniLibs.srcDirs = ['src/main/libs']. Le chemin de .so est MyProj\app\src\main\libs\armeabi-v7a\libSmartAlgorithm.so.

libs/TARGET_ARCH_ABI

arm64-v8a 
armeabi 
armeabi-v7a 
mips 
mips64 
x86 
x86_64 
+0

Mon erreur était que je stockais mes fichiers directement dans main \ libs au lieu de leurs répertoires d'architecture respectifs! Merci beaucoup! –