gpt4 book ai didi

android - 是否有可能在 Android Studio 中构建一个带有 .so 作为输出的 native 模块

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:12:38 25 4
gpt4 key购买 nike

我有几个 C++ 项目,我目前使用 Android.mk 文件和 ndk-build 构建它们。因为这不是很好调试,所以我想将这个 c++ 项目作为模块包含在我的 android studio 项目中。这个 android studio 项目目前是一个 android java 库,它使用来自 ndk-build 的 .so。

我通过创建一个新的 android 库模块并导入 c++ 代码、设置 header 和库路径来进行调试。这个模块看起来像这样:

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/",

]
}
}
}
}

这工作正常,但我在 module/build/output/aar/libname_release.aar/lib/abi/lib.so 中得到了 .so,这不是一个好地方,因为我会直接需要 .so 而无需解压缩 aar .

是否有任何可能的方法让这个模块只在给定路径创建 .so 并让另一个模块构建和使用它?

最佳答案

当然问了没多久就找到了办法。 http://tools.android.com/tech-docs/new-build-system/gradle-experimental#TOC-NDK-Dependencies

您可以使用“应用插件:'com.android.model.native'”代替“应用插件:'com.android.model.library'”,并且在具有依赖项的模块中,您可以使用:

sources {
main {
jni {
dependencies {
project ":dependency_module"
}
}
}
}

关于android - 是否有可能在 Android Studio 中构建一个带有 .so 作为输出的 native 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38521846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com