android - Gradle 从构建中删除资源文件

标签 android android-studio gradle android-gradle-plugin build.gradle

我正在尝试使用 Mako 根据一些标志生成一些文件。 排除不必要的信息,我希望在项目的 src 和 res 文件夹中都有一些 *.tpl 文件,并且我需要在构建时忽略它们。

我使用的是 Android Studio,因此我使用 Gradle 进行构建。我的 build.gradle 文件如下所示:

sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }

我尝试从构建中删除这些文件,将文件更改为:

sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java {
                srcDirs = ['src']
                exclude '*.tpl'
            }
            res {
                srcDirs = ['res']
                exclude '*.tpl'
            }
            assets.srcDirs = ['assets']
        }
    }

这适用于 java 文件,但在构建时我收到此错误:

:Presentation:generateReleaseResValues UP-TO-DATE
:Presentation:generateReleaseResources UP-TO-DATE
:Presentation:packageReleaseResources
D:\example\res\layout\stuff.xml.tpl
Error:Error: The file name must end with .xml
:Presentation:packageReleaseResources FAILED
Error:Execution failed for task ':Presentation:packageReleaseResources'.
> D:\example\res\layout\stuff.xml.tpl: Error: The file name must end with .xml
Information:BUILD FAILED

知道我在这里做错了什么吗?

稍后编辑: 我尝试过的其他事情: 根据@Stanislav的回答,我更改为排除'**/*.xml.tpl',它因相同的错误而失败。

然后我尝试更改为排除'**/*.tpl.xml'以避免该错误,但我得到了这个错误:

Error:Execution failed for task ':Presentation:packageReleaseResources'.
> D:example\res\layout\stuff.tpl.xml: Error: '.' is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore

因此,下一个测试是将文件命名为 stuff_tpl.xml 并使用排除命令来排除'**/*_tpl.xml',但这会引发错误:

Error:(1) Error parsing XML: syntax error
D:example\res\layout\stuff_tpl.xml

我还尝试了以下几行:

excludes = ['**/*_tpl.xml']
excludes = ['layout/*_tpl.xml']
excludes = ['layout/stuff_tpl.xml']

但是他们都没有从构建中删除该文件。

最佳答案

根据这个答案question ,无法从构建中删除 Android 资源,只能删除 JAVA 资源。

我现在将模板文件存储在项目外部的单独文件夹中,并使用 Mako以及一个额外的 python 脚本,用于在项目生成步骤中将它们移至可绘制文件夹。

关于android - Gradle 从构建中删除资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37349026/

相关文章:

java - 迁移到java 11

android - 如何在 CodeNameOne 项目中指定 abiFilters?

windows - RTL(波斯语-阿拉伯语)字母在 android studio 编辑器中搞砸了

android - Android Studio不起作用

android - 在android的主应用程序中安装多个应用程序并仅显示主应用程序

java - 如何解决 OutOfBounds BuildTime 错误 - api 28

Android Studio - Gradle list 合并失败

java - MVVM + 改造 : retrieve JSON Object List then produces null

java - 安装 Android 应用程序后首次使用时创建一次登录页面

android - 如何将背景图像放置到 Android 中 TextView 的左上角