我正在尝试使用 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/