Я использую Android Studio 2.2 и настроил Gradle для сборки исходников c / c ++ с NDK через CMake.
Теперь я хотел бы отключить сборку NDK для buildType «debug». Для 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'
}
}
}
}
Как отключить сборку NDK (externalNativeBuild) для defaultConfig или buildType «debug»?
У других разработчиков не будет установлен NDK (local.properties без ndk.dir = PATH_TO_NDK). Это возможно настроить?
заранее спасибо
Редактировать:
Этот externalNativeBuild должен быть настроен с модулем com.android.library, а не с модулем com.android.application.
Вот как я это решил.
Таким образом, Gradle build работает для разработчиков с и без НДК установлен (и на сервере сборки), что и было целью.
/*
* 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, если я правильно понимаю, вы хотите сделать (или пропустить) определенные вещи в соответствии с buildType. Если это так, вы можете взглянуть на одно из многочисленных обсуждений на эту тему, например, это: получить текущий buildType.
Что касается № 2, не очень понятно, что вы хотите. Если вы ищете альтернативу установке пути NDK в local.properties, вы можете установить его с помощью переменной среды ANDROID_NDK_HOME. Если вы хотите предотвратить сбои gradle, проверьте, существует ли ndk.dir в соответствующих местах вашего скрипта build.gradle (используя properties.getProperty (‘ndk.dir’)).