我正在使用Android Studio 2.2,并设置Gradle通过CMake使用NDK构建c / c ++源代码。
现在我想为buildType" debug"禁用NDK构建。对于buildType"发布"我想保留它。
目标是在构建服务器上编译NDK源代码(使用"发布")但是为开发人员禁用它(使用" 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'
}
}
}
}
如何为defaultConfig或buildType" debug"?
其他开发人员未安装NDK(local.properties 没有 ndk.dir = PATH_TO_NDK)。这可以配置吗?
提前致谢
编辑:
此externalNativeBuild必须使用&com; android.library' -module配置,而不是com.android.application' -module。
答案 0 :(得分:3)
以下是我如何解决它。
这样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"
}
答案 1 :(得分:0)
关于#1,如果我理解正确,你想根据buildType做某些事情(或跳过)。如果是这样,您可以查看有关此主题的众多讨论之一,例如:get current buildType。
关于#2,你不清楚你想要什么。如果您正在寻找在local.properties中设置NDK路径的替代方法,则可以通过ANDROID_NDK_HOME环境变量进行设置。如果要防止gradle失败,请检查build.gradle脚本的相关位置是否存在ndk.dir(使用properties.getProperty(' ndk.dir'))。