gpt4 book ai didi

c++ - 如何为某些构建变体禁用 Android NDK 构建

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

我正在使用 Android Studio 2.2 并设置了 Gradle 以通过 CMake 使用 NDK 构建 c/c++ 源代码。

现在我想禁用 buildType“debug”的 NDK 构建。对于 buildType“release”,我想保留它。

目标是让 NDK 源代码在构建服务器上编译(使用“release”),但对开发人员禁用它(使用“debug”)。

这是当前正在使用的 build.gradle 文件:

android {
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}

defaultConfig {
externalNativeBuild {
cmake {
arguments "-DANDROID_TOOLCHAIN=clang"
cppFlags "-std=c++14"
}
}

ndk {
abiFilters 'armeabi-v7a', 'x86'
}
}

buildTypes {
release {
externalNativeBuild {
cmake {
arguments "-DANDROID_TOOLCHAIN=clang"
cppFlags "-std=c++14"
}
}

ndk {
abiFilters 'armeabi-v7a'
}
}
}
}
  1. 如何为 defaultConfig 或 buildType“debug”禁用 NDK 构建 (externalNativeBuild)?

  2. 其他开发者不会安装 NDK(local.properties without ndk.dir=PATH_TO_NDK)。这可以配置吗?

提前致谢


编辑:

此 externalNativeBuild 必须配置为“com.android.library”模块,而不是“com.android.application”模块。

最佳答案

我是这样解决的。

通过这种方式,Gradle 构建适用于安装和未安装 NDK 的开发人员(以及在构建服务器上),这就是我们的目标。

/*
* As soon as Gradle is linked to the externalNativeBuild (cmake / ndkBuild) with a path to
* CMakeLists.txt / Android.mk, the ndk.dir from local.properties file or the ANDROID_NDK_HOME
* environment variable needs to be set, otherwise gradle fails.
* E.g.:
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
*/

// Only enable externalNativeBuild on machines with NDK installed -> valid ndkDir
def ndkDir = project.android.ndkDirectory;
if (ndkDir != null && !ndkDir.toString().isEmpty()) {

externalNativeBuild.cmake.path = "CMakeLists.txt"
}

关于c++ - 如何为某些构建变体禁用 Android NDK 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41280368/

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