当前位置: 首页 > 知识库问答 >
问题:

如何在实验gradle中排除cpp文件?

阙佐
2023-03-14

我正在尝试使用Android Studio 1.3.1使用实验性的gradle语法编译NDK项目。

我的< code>build.gradle看起来非常像茶壶示例中的那个

除了我的源代码树有一些我不想包含在构建中的文件。我无法删除这些文件,所以我需要gradle忽略它们。

我尝试添加一个< code>exclude定义:

android.sources {
    main {
        jni {
            source {
                srcDirs 'src/main/jni'

                excludes += "src/main/jni/FileToExclude.cpp"
            }
        }

    }
}

但这并不影响结果。Gradle 仍在尝试编译此文件。

我尝试排除=,=排除,什么 都没有,但没有排列工作。

共有3个答案

陶智
2023-03-14

我查看了android源代码,看起来你可以更新过滤器来排除你的文件。不知道你用的是什么版本的gradle插件,所以不能确定底层api是什么。您可以尝试手动设置PatternFilterable来排除该文件。

android.sources {
    main {
        jni {
            source {
                srcDirs 'src/main/jni'
                getFilter().exclude('**/FileToExclude.cpp')
            }
        }
    }
}

我看了Gradle Code Review,发现正在使用LanguageSourceSet。查看LanguageSourceSet的Gradle文档,您可以访问SourceDirectorySet,它有一个PatternFilter,您可以在其上设置排除。

姜乐家
2023-03-14

我认为您以错误的方式提供了文件的路径。它应该是:

srcDir 'src/main/jni '

排除“FileToExclude.cpp”

您可以点击此链接。https://discuss.gradle.org/t/how-can-i-exclude-certain-java-files-from-being-compiled/5287/2

还要注意,应该使用exclude而不是exclude,使用srcDir而不是srcDirs。

谢雅珺
2023-03-14

根据我的发现,从构建中排除文件的正确指令是排除,而不是排除。检查您的 build.gradle 以确保您没有在此处犯错误(您在提供的示例中使用了排除)。

Upd:好的,经过一些研究,我在AOSP问题跟踪器上发现了这个线程。主题启动器如下所示:

源集的java/resources组件允许包含/排除模式。

我们应该为 aidl/rs/jni/assets 执行此操作。

这个问题仍然悬而未决,所以我认为这个功能必须在AndroidGradle插件或Android Studio中实现,或者在两者中实现(还没有实现)。它将在Android Studio1.5中实现,至少标签上是这么说的。

 类似资料:
  • gradle:如何排除重复的资源文件?例如。, META-INF/foo。在.././.下的xml/src/main/resources与src/main/resources/META-INF/foo同名。xml。 还尝试了: foo.xml文件都被排除在外。

  • 我正在使用Android Studio和Google Drive,这会使隐藏的系统文件可见(例如图标和桌面ini),导致错误,如本文所述。我希望指示gradle 2.14忽略它们,而不是运行脚本来删除这些文件。 为了找出如何排除文件,我在目录和中创建了名为“excludeme.txt”的文件。我尝试对项目中的两个文件进行各种修改,但没有成功排除该文件。 具体来说,我对的文件进行了以下修改: 我还将

  • 我试图在Spring Boot项目中使用最新(主)版本的Betamax,我得到了错误<code>SLF4J:检测到log4j-over-SLF4J。jar和slf4j-log4j12.jar在类路径上,抢占StackOverflowerError。。 所以我看了这个问题的最上面的答案,它说通过这样做来排除冲突依赖: 但是我的项目使用 Gradle,所以我必须将其转换为 Gradle,我真的不知道我

  • 我正在使用“maven”插件将Gradle构建创建的工件上传到Maven中央存储库。我正在使用类似于以下任务的任务: 然而,此任务创建的POM文件不能正确报告在我的Gradle构建文件中被排除的依赖项。例如: 如何在生成的POM文件中正确管理排除的依赖项?

  • 我有一个相当简单的要求。我有以下项目布局: 我想做的是为中的所有java文件创建一个jar 使用from: 直接执行“排除”: 这些都是我在网上找到的建议--但似乎没有一个奏效。我做错了什么。 分级版本是2.12。

  • 问题内容: 我的文件夹包含单元测试和功能测试。功能测试的类路径中有单词,而单元测试中没有。那么,如何仅运行单元测试? 非常感谢你。 PS :我知道很容易使用“包含”逻辑来选择测试。例如,仅在我的情况下运行功能测试,我可以简单地使用此功能。 但是,我不知道如何以简单的方式排除测试。 顺便说一句,我正在使用gradle 1.11。 问题答案: 任务的文档通过一个示例和所有内容对其进行了说明: