在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" )) }
}
就像那里说的那样 这解决了我!