在项目中启用 NDK 会导致目录被视为包

Enabling NDK In Project Causes Directories to be Seen as Packages

提问人:StuStirling 提问时间:11/20/2020 最后编辑:JunaidStuStirling 更新时间:11/20/2020 访问量:31

问:

我有一个相当复杂的项目,有许多构建变体和自定义源代码集。我最近集成了 NDK,并注意到一些奇怪的事情。什么都没有坏,一切似乎都在正常工作。我认为这是 Android Studio 的一个错误,除非 gradle 配置有问题。

我将以下内容添加到我的app/build.gradle

externalNativeBuild {
    cmake {
        path "CMakeLists.txt"
    }
}

ndkVersion "22.0.6917172"

然后,我注意到 Android Studio 的“项目”窗格中的目录显示得好像它们是包一样。看起来好像每个变体都在处理中,即使我设置为被忽略。

这是目录以前的样子

Before adding NDK

这就是他们现在的样子

After adding NDK

更大的问题是,构建变体的自定义源代码集仅包含在 kotlin 目录的级别?app/src/

custom source sets

这些配置与此示例类似。app/build.gradle

android {
    ...
    sourceSets {
        padoq.java.srcDirs += "src/standardTileHandler/kotlin"
    } 
    ...
} 
padoq.java.srcDirs += nonHsdSource

以前,在项目视图中,这些显示为包含包的目录名称,而不是根目录。这是它以前的样子:kotlin

custom source set before

为了完整起见,我通过在根块中设置要忽略的变体来忽略某些构建变体:build.gradlesubprojects

subprojects {
    afterEvaluate { project ->
        if (project.hasProperty("android")) {
            def androidProperty = project["android"]
            if (androidProperty.hasProperty("flavorDimensionList")) {
                def flavorDimensions = androidProperty["flavorDimensionList"]
                if (flavorDimensions != null && flavorDimensions.contains("bopad")) {
                    androidProperty.invokeMethod("variantFilter", { variant ->
                        def names = variant.flavors*.name
                        // if names does not contain a variant that I want to build right now
                        setIgnore(true)
                    })
                }
            }
        }
    }
}
C++ android-studio android-ndk android-gradle-插件

评论


答: 暂无答案