Как отключить сборку Android NDK для какого-то варианта сборки

Я использую 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'
}
}
}
}
  1. Как отключить сборку NDK (externalNativeBuild) для defaultConfig или buildType «debug»?

  2. У других разработчиков не будет установлен NDK (local.properties без ndk.dir = PATH_TO_NDK). Это возможно настроить?

заранее спасибо


Редактировать:

Этот externalNativeBuild должен быть настроен с модулем com.android.library, а не с модулем com.android.application.

4

Решение

Вот как я это решил.

Таким образом, 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"}
3

Другие решения

Что касается # 1, если я правильно понимаю, вы хотите сделать (или пропустить) определенные вещи в соответствии с buildType. Если это так, вы можете взглянуть на одно из многочисленных обсуждений на эту тему, например, это: получить текущий buildType.

Что касается № 2, не очень понятно, что вы хотите. Если вы ищете альтернативу установке пути NDK в local.properties, вы можете установить его с помощью переменной среды ANDROID_NDK_HOME. Если вы хотите предотвратить сбои gradle, проверьте, существует ли ndk.dir в соответствующих местах вашего скрипта build.gradle (используя properties.getProperty (‘ndk.dir’)).

0

По вопросам рекламы [email protected]