Как исключить каталог кода C ++ из сборки в Android Studio / gradle?

Я пытаюсь исключить определенные каталоги из моей сборки в Android Studio 2.1.2, Gradle 2.10. Вот файл build.gradle, который у меня сейчас есть:

model {
android {
compileSdkVersion = 23
buildToolsVersion = '23.0.2'
defaultConfig {
applicationId = 'com.android.gl2jni'
minSdkVersion.apiLevel = 5
targetSdkVersion.apiLevel = 23
}
ndk {
platformVersion = 9
moduleName = 'gl2jni'
toolchain = 'clang'
stl = 'gnustl_static'
cppFlags.addAll(['-std=c++11', '-Wall', '-Wc++11-narrowing'])
ldLibs.addAll(['log', 'GLESv2'])
}
buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-rules.txt'))
}
}

sources {
main {
jni {
source {
srcDirs = ['src/main/jni/KataPlatform']
exclude 'src/main/jni/KataPlatform/Linux'
}
}}
}
}
}

Директива exclude, кажется, не имеет никакого эффекта, так как сборка успешно погружается в подпапку и начинает генерировать ошибки. Как мне убедить пропустить все файлы в этой подпапке Linux?

3

Решение

Проблема, с которой вы сталкиваетесь, заключается в том, что gradle пытается исключить «src / main / jni / KataPlatform / src / main / jni / KataPlatform / Linux». После того, как вы установили свои sourceDirs, ваши исключения должны быть относительно этого. Попробуйте изменить исключение на «Linux», как показано в следующем фрагменте кода:

sources {
main {
jni {
source {
srcDirs = ['src/main/jni/KataPlatform']
exclude 'Linux'
}
}}
}

В качестве альтернативы, если вы не установите srcDirs, по умолчанию будет использоваться «src / main / jni», поэтому изменение кода на следующий также должно работать:

sources {
main {
jni {
source {
exclude 'KataPlatform/Linux'
}
}}
}
0

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

Других решений пока нет …