如何在Android Studio/gradle中排除C++代码目录?

3

我正在尝试从我的构建中排除特定的目录,在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'
                }
            }


        }
    }
}
}

排除指令似乎没有效果,因为构建程序愉快地进入子文件夹并开始生成错误。我该如何让它跳过Linux子文件夹中的所有文件?


2
看起来这仍然是一个未解决的问题:https://code.google.com/p/android/issues/detail?id=64957 - Richard Critten
1
我很困惑一个构建系统竟然没有一个正确的实现这么基本的东西。放弃Gradle,改用旧式的Ant构建配置是一个合理的行动吗? - Promit
1
自从他们宣布了新的构建系统以来,Android Studio对NDK的支持不足/延迟一直让我感到困惑。 - Richard Critten
1个回答

0
你遇到的问题是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'
            }
        }


    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接