Structure du projet:
Projet d'application -> dépend du projet de bibliothèque
Library Project a un dossier pour les bibliothèques jni compilées
jniLibs.srcDirs = ['libs']
Et j'ai essayé d'ajouter ce qui suit à l'élément Android de build.gradle selon l'exemple d'application https://Android.googlesource.com/platform/tools/build /+/2e1f7810edd76d92cee8d3e06bc4dec0c288adea/tests/ndkSanAngeles/build.gradle cependant Android les projets de bibliothèque ne prennent pas en charge productFlavours et, à ce titre, l'assemblage échoue avec "Impossible de trouver la méthode productFlavors () pour les arguments [ dghdhd] sur le projet "
productFlavors {
x86 {
ndk {
abiFilter "x86"
}
}
arm {
ndk {
abiFilters "armeabi-v7a", "armeabi"
}
}
}
Existe-t-il un moyen d'ajouter la prise en charge NDK à un projet de bibliothèque Android?
Au final, je n'avais pas besoin d'utiliser les saveurs des produits.
Pour le projet de bibliothèque, j'ai ajouté ce qui suit:
Android {
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
Le dossier libs avait un dossier à l'intérieur appelé "armeabi-v7a" et comme c'est ma seule cible, il a fonctionné un régal.
Les fichiers ndk (.so) sont propagés dans le projet Android Android qui utilise le projet de bibliothèque Android).
Exemple avec le nouveau plugin expérimental Android Gradle .
Exigences:
1) Vous pouvez simplement mettre toutes les bibliothèques natives partagées dans le dossier main/jniLibs, par défaut.
Structure du projet
dossier racine/Android
dossier racine/Android_project/app/src/main/jniLibs/x86
dossier racine/Android_project/app/src/main/jniLibs/armeabi-v7a
dossier racine/Android_project/app/src/main/jniLibs/...
Gradle les téléchargera automatiquement sur l'appareil.
Ensuite, vous pouvez charger la bibliothèque dans une application.
static {
System.loadLibrary("mylibrary");
}
2) Vous pouvez également placer toutes les bibliothèques natives partagées dans l'emplacement personnalisé.
Exemple avec un chemin vers le répertoire bin/Android/Debug.
Dans ce cas, vous devez définir manuellement l'emplacement des bibliothèques dans le fichier build.gradle.
Structure du projet
dossier racine/Android
dossier racine/bin/Android/Debug/jniLibs/x86
dossier racine/bin/Android/Debug/jniLibs/armeabi-v7a
dossier racine/bin/Android/Debug/jniLibs/...
dossier racine/Android_project/app/build.gradle
apply plugin: 'com.Android.model.application'
model {
Android {
sources {
main {
jni {
source {
srcDirs = []
}
}
jniLibs {
source {
srcDirs "/../../bin/Android/Debug/jniLibs"
}
}
}
}
}
}
Selon ce fil:
https://groups.google.com/forum/#!topic/adt-dev/nQobKd2Gl_8
ne pas pouvoir ajouter des fichiers .so aux projets de bibliothèque était un bug qui a été corrigé dans la v0.8 du plugin.
Je travaille avec Android Studio 2.1, et j'ai trouvé que l'ajout de l'entrée sources ou sourceSets à mon build.gradle n'avait aucun effet apparent. Au lieu de cela, j'ai trouvé que j'avais besoin des éléments suivants:
Android {
defaultConfig {
ndk {
moduleName "libmp3lame"
}
}