我正在尝试将项目更新为Android Studio 3。
在build.gradle文件中不再接受以下代码段。
applicationVariants.all { variant ->
variant.outputs.each { out ->
def oFile =out.outputFile // This line causes failure
//...
}
}
该错误是一个简单的“无效”,但智能提示表明它是正确的,因为它可以自动完成。
检查idea.log显示以下异常:
Caused by: java.lang.RuntimeException: Not valid.
at com.android.ide.common.build.ApkData.getMainOutputFile(ApkData.java:136)
at com.android.build.gradle.internal.api.BaseVariantOutputImpl.getOutputFile(BaseVariantOutputImpl.java:60)
at com.android.build.gradle.internal.api.ApkVariantOutputImpl_Decorated.getOutputFile(Unknown Source)
at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.getProperty(BeanDynamicObject.java:228)
at org.gradle.internal.metaobject.BeanDynamicObject.tryGetProperty(BeanDynamicObject.java:171)
at org.gradle.internal.metaobject.CompositeDynamicObject.tryGetProperty(CompositeDynamicObject.java:55)
at org.gradle.internal.metaobject.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:59)
at com.android.build.gradle.internal.api.ApkVariantOutputImpl_Decorated.getProperty(Unknown Source)
我在Gradle 4上找不到任何文档。这可能是Bug还是不推荐使用的功能?
更新:修复了APK重命名问题:
使用所有迭代器,而不是每个:
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
先前的答案仍然有效:这是新插件的已知问题:
发生此生成错误是因为在配置阶段不再创建特定于变体的任务。这导致插件不预先知道其所有输出,但这也意味着更快的配置时间。作为替代方案,我们将引入新的API以提供类似的功能。
根据《迁移指南》,我们需要等待另一种方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句