Android Studio - inclure et de consommer .donc, bibliothèque
J'ai besoin d'utiliser certaines bibliothèques natives(.donc) dans mon projet android. Selon certaines réponses ici dans StackOverflow sur ce sujet, j'ai créé un jniLibs
dossier dans app/src/main
et y mettre mes fichiers:
armeabi/my_lib.so
armeabi-v7a/my_lib.so
x86/my_lib.so
Alors, dans mon activité de classe I utilisation:
static {
System.loadLibrary("my_lib");
}
Mais quand je lance l'application, un UnsatisfiedLinkError
exception est générée. Si c'est important pour être remarqué, je n'ai pas d'Android.mk fichier, et je n'ai pas changé quoi que ce soit qui a à voir avec cela dans mon gradle
fichiers. Donc, la seule chose que j'ai fait est de copier-coller de ma .so
fichiers dans jniLibs
et à écrire le code ci-dessus dans mon activité. Donc ce qui peut être la cause de ce problème? Ai-je raté quelque chose?
MODIFIER
C'est mon gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 15
buildToolsVersion "23.0.3"
compileOptions.encoding = 'ISO-8859-1'
defaultConfig {
applicationId "my.package"
minSdkVersion 4
targetSdkVersion 4
ndk {
moduleName "my_so_lib"
}
}
sourceSets {
main {
jni.srcDirs = ["libs"]
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
debuggable true
}
}
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a', 'mips', 'armeabi'
universalApk false
}
}
}
Vous devez vous connecter pour publier un commentaire.
Solution 1
Créer un Dossier "jniLibs" à l'intérieur "src/main/"
Mettez tous vos .ainsi, les bibliothèques de l'intérieur "src/main/jniLibs" dossier
Structure de dossier ressemble :
Pouvez-vous confirmer que vous avez cette hiérarchie ?
Pas de code supplémentaire nécessite juste de synchroniser votre projet et l'exécution de votre application.
De référence
https://github.com/commonsguy/sqlcipher-gradle/tree/master/src/main
Solution 2
Ajouter à la fois des extraits de code dans votre module de gradle.construire en tant que fichier de dépendance:
Comment créer cette coutume jar:
source
Merci les gars pour les aider, mais c'était un problème stupide. Lorsque j'ai importé mon
.so
fichiers sousjniLibs
, ils ont été nommés commelibSONAME.so
. Dans ces lignes de code:nous ne devrions pas utiliser
System.loadLibrary("libSONAME");
, mais justeSystem.loadLibrary("SONAME");
.Ensuite, il suffit de construire le projet et tout était OK.
Merci à vous tous pour votre aide. J'espère que cela fera gagner du temps à quelqu'un d'autre.
Qu'est-ce que votre gradle version? Si vous avez un 0.7.3 ou une version plus récente, puis le prochain article devrait vous aider:
Cliquez sur ici!
1.5.0
. J'ai fait ce que le lien donne à penser, mais j'ai eu cette erreurError: NDK integration is deprecated in the current plugin.....
. Dois-je faire autre chose?