0

我正在为 Android Studio 2.3 中的 Gradle 3.3 苦苦挣扎。我有资产生成任务,我在 cfg 部分指定了 inputs.dir 和 outputs.dir:

task compileAssets{

inputs.dir 'src/main/assets_src' 
outputs.dir 'src/main/assets' 

def proj_src = 'src/main/'
def abs_proj_src = project.projectDir.getAbsolutePath() + '/' + 'src/main/'
abs_proj_src = abs_proj_src.replace('\\','/')

doLast {
    delete(proj_src + 'assets')
    mkdir(proj_src + 'assets')

    copy
        {
            from proj_src + 'assets_src'
            include 'xml/**'
            include 'fonts/**'
            include 'shaders/**'
            into proj_src + 'assets'
        }

    javaexec{
        main = '-jar'
        args = [
            "../../utils/encoder.jar",
            abs_proj_src + 'assets_src/bin/levels',
            abs_proj_src + 'assets/bin/levels',
            '-rewrite'
        ]
    }
}

我希望 Gradle 会检查输入文件夹更改的内容,如果添加、删除或更改了某些文件,它将允许执行任务,否则它将打印“UP-TO-DATE”。但只有当只有 delete(...) 和 mkdir(...) 时才会如此。否则每次都会执行。也许我以错误的方式理解“增量构建”这个术语?或者可能有任务大小限制,或者增量构建中禁止使用 javaexec 或复制?

PS。我尝试使用 make 命令直接从 AS Gradle 项目窗格启动任务。

4

1 回答 1

0

这是我自己的错误。下面是定义的 cleanAssets 任务,我忘记添加 << 或 doLast:

task cleanAssets{
        delete(proj_src + 'assets')
        mkdir(proj_src + 'assets')
}

因此,配置阶段资产文件夹中的每个构建都被删除。有趣的!

于 2017-03-29T13:37:02.180 回答