Project structure:
App project --> depends on Library project
Library Project has a folder for the compiled jni libs
jniLibs.srcDirs = ['libs']
And I've tried adding the following to the android element of the build.gradle as per the example app https://android.googlesource.com/platform/tools/build/+/2e1f7810edd76d92cee8d3e06bc4dec0c288adea/tests/ndkSanAngeles/build.gradle however android library projects do not support productFlavours and as such the assemble fails with "Could not find method productFlavors() for arguments [dghdhd] on project"
productFlavors {
x86 {
ndk {
abiFilter "x86"
}
}
arm {
ndk {
abiFilters "armeabi-v7a", "armeabi"
}
}
}
Is there a way to add ndk support to an android library project?
In the end I didnt need to use product flavours.
For the library project I added the following:
android {
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
The libs folder had a folder inside called "armeabi-v7a" and as this is my only target it worked a treat.
The ndk files (.so) are propagated into the android project that is using the android library project.
Example with new android experimental gradle plugin .
Requirements:
1) You could simply put all shared native libraries in the main / jniLibs folder, by default.
Project structure
root folder / android project
root folder / android_project / app / src / main / jniLibs / x86
root folder / android_project / app / src / main / jniLibs / armeabi-v7a
root folder / android_project / app / src / main / jniLibs / ...
Gradle will automatically upload them to the device.
Then you could load the library in an application.
static {
System.loadLibrary("mylibrary");
}
2) You could also put all shared native libraries in the custom location.
Example with a path to the bin / android / Debug directory.
In that case you should manually set the libraries location in the build.gradle file.
Project structure
root folder / android project
root folder / bin / android / Debug / jniLibs / x86
root folder / bin / android / Debug / jniLibs / armeabi-v7a
root folder / bin / android / Debug / jniLibs / ...
root folder / 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"
}
}
}
}
}
}
According to this thread:
https://groups.google.com/forum/#!topic/adt-dev/nQobKd2Gl_8
not being able to add .so files to library projects was a bug that was fixed in v0.8 of the plugin.
I'm working with Android Studio 2.1, and I found that adding the sources or sourceSets entry to my build.gradle had no apparent effect. Instead I found that I needed the following:
android {
defaultConfig {
ndk {
moduleName "libmp3lame"
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.