我有几个c ++项目,我目前使用Android.mk文件和ndk-build构建。由于这不是很好调试我想在我的android studio项目中包含这个c ++项目作为模块。这个android工作室项目目前是一个使用来自ndk-build的.so的android java库。
我通过创建一个新的android库模块并导入c ++代码,设置头和库路径来调试工作。这个模块看起来像这样:
apply plugin: 'com.android.model.library'
model {
android {
compileSdkVersion = 23
buildToolsVersion = '23.0.2'
defaultConfig {
minSdkVersion.apiLevel = 4
targetSdkVersion.apiLevel = 23
}
}
android.ndk {
moduleName = 'module_name'
toolchain = 'gcc'
stl "gnustl_static"
ldFlags.addAll(["-L/LIB_PATH"])
ldLibs.addAll(["android", "log", "whatever_lib"])
cppFlags.addAll(['-std=c++11',
"-I" + "/SEARCH_PATHS"])
}
android.productFlavors {
create("arm7") {
ndk.abiFilters.add("armeabi-v7a")
}
}
android.sources {
main {
java.source.srcDirs += []
res.source.srcDirs += []
assets.source.srcDirs += []
jniLibs.source.srcDirs += []
jni.source{
srcDirs += [
NATIVE_PROJECT_PATH + "include/",
NATIVE_PROJECT_PATH + "src/",
]
}
}
}
}
这个工作正常,但是我在模块/ build / output / aar / libname_release.aar / lib / abi / lib.so中得到.so这不是一个好地方,因为我需要.so直接而不解压缩aar 。
有没有办法让这个模块只在给定的路径上创建.so并建立另一个模块并使用它?
答案 0 :(得分:1)
当然,我在询问后不久找到了一条路。 http://tools.android.com/tech-docs/new-build-system/gradle-experimental#TOC-NDK-Dependencies
而不是"应用插件:' com.android.model.library'"你可以使用" apply plugin:' com.android.model.native'"在具有依赖关系的模块中,您可以使用:
sources {
main {
jni {
dependencies {
project ":dependency_module"
}
}
}
}