在com.android.build.gradle.internal.api.ApplicationVariantImpl找不到属性'outputFile'

更新到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")) } 

现在抛出:

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

也不能跳转到ApplicationVariantImpl类来查看属性是如何被重命名的。 任何人都知道这个解决方法?

尝试这个

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

更全面:

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

这可能会发生几个原因:

1.)首先像@ Khalidov先前所说的那样 ,试试

 applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = ... } } 

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

例如,我得到这个问题的勺子 ,通过更新勺解决了:

 classpath 'com.stanfy.spoon:spoon-gradle-plugin:0.14.1' 

或者只有一个变体:

 def apk = outputs[0].outputFile 

代替

 def apk = variant.outputFile 

确保你运行的是最新的gradle版本(不是插件,自行编译)。

检查你的gradle-wrapper.properties 。 你在运行gradle 2.1吗?

有关兼容性的更多信息: http : //tools.android.com/tech-docs/new-build-system/version-compatibility

我设法解决如下:

旧:

 buildTypes { libertação { runProguard false // esta linha tem que ser mudado proguardFiles getDefaultProguardFile ( 'android.txt proguard-' ), 'proguard-rules.pro' } 

}

新:

 buildTypes { libertação { minifyEnabled false // nova versão proguardFiles getDefaultProguardFile ( 'android.txt proguard-' ), 'proguard-rules.pro' } 

}

(26,0 )Gradle的DSL方法没有find:'runProguard()'在你的项目的文件buil.gradle中编辑

而且编辑之后也是这一行:

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

}

就像那里说的那样 这解决了我!