无法在com.android.build.gradle.internal.api.ApplicationVariantImpl上找到属性'outputFile'

lig*_*igi 50 android gradle android-studio build.gradle android-gradle-plugin

更新到AS 1.0 RC 1和插件0.14.4后,我在build.gradle的重命名部分遇到问题:

applicationVariants.all { variant ->
            def file = variant.outputFile
            variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
        }
Run Code Online (Sandbox Code Playgroud)

现在抛出:

Error:(78, 0) Could not find property 'outputFile' on com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@67e7625f.
Run Code Online (Sandbox Code Playgroud)

而且我也无法跳转到ApplicationVariantImpl类来查看属性是如何重命名的.有人知道这方面的解决方法吗?

Ole*_*dov 83

试试这个

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def file = output.outputFile
        output.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
    }
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*ris 21

更全面:

applicationVariants.all { variant ->
    variant.outputs.each  { output ->
        output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
    }
}
Run Code Online (Sandbox Code Playgroud)


cos*_*sic 6

这可能是由于以下几个原因:

1.)首先,正如@Khalidov之前所说,试试

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = ...
    }
}
Run Code Online (Sandbox Code Playgroud)

2.)第二次尝试更新所有其他插件.

例如,我为Spoon解决了这个问题,通过更新Spoon解决了:

classpath 'com.stanfy.spoon:spoon-gradle-plugin:0.14.1'
Run Code Online (Sandbox Code Playgroud)


Oll*_*e C 5

或者只有一个变体:

def apk = outputs[0].outputFile
Run Code Online (Sandbox Code Playgroud)

代替

def apk = variant.outputFile
Run Code Online (Sandbox Code Playgroud)