不推荐使用variant.getOutputFile()。请在variant.getOutputs()中调用它

时间:2014-11-01 11:05:18

标签: android gradle android-gradle build.gradle

自从Android Gradle插件0.13.0中出现问题以来,这已经出现了,但对于我的生活,我无法理解为什么有时会记录此警告。

考虑此块,根据变体类型重命名APK:

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def oldFile = output.outputFile
        if (oldFile != null && oldFile.name.endsWith('.apk')) {
            def newFile = "Fancy conditionally-formatted file name here"
            print "\nBefore"
            output.outputFile = new File(oldFile.parent, newFile)
            print "\nAfter"
        }
    }
}

查看gradle日志,我看到了:

Before
WARNING [Project: <myproject>] variant.getOutputFile() is deprecated. Call it on one of variant.getOutputs() instead.
WARNING [Project: <myproject>] variant.getProcessResources() is deprecated. Call it on one of variant.getOutputs() instead.
After

似乎表示调用行output.outputFile = new File(oldFile.parent, newFile)会抛出此警告。事实上,Google在this page底部的示例中特别使用了这种风格。如果我们根本无法触及output,我们如何设置其outputFile

除此之外,我不知道getProcessResources()是如何参与的。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

variant.outputFile更改为variant.outputs[x].outputFile

答案 1 :(得分:1)

而不是

def newFile = "Fancy conditionally-formatted file name here"
output.outputFile = new File(oldFile.parent, newFile)

请执行以下操作

def apk = output.outputFile
def newName = getNewName() // any fancy formatted file name
apk.renameTo(new File(apk.parentFile, newName))

希望它有所帮助。

答案 2 :(得分:0)

事实证明,Gradle插件仍然在引擎盖下使用已弃用的调用。从Android Gradle Plugin 0.14.4开始,这些警告不再出现。