我正在使用此代码
applicationVariants.all { variant ->
variant.outputs.each { output ->
def SEP = "_"
def flavor = variant.productFlavors[0].name
def buildType =
variant.variantData.variantConfiguration.buildType.name
def version = variant.versionName
def date = new Date()
def formattedDate = date.format('ddMMyy_HHmm')
def newApkName = PROJECT_NAME + SEP + flavor + SEP + buildType + SEP + version + SEP + formattedDate + ".apk"
def file = new File(newApkName)
output.outputFile = file
}
}
Run Code Online (Sandbox Code Playgroud)
当我构建新的apk时更改apk文件的名称,但由于我使用Android Studio 3.0 Canary 2出现此错误:
无法设置只读属性'outputFile'的值....
我正在尝试将项目更新到Android Studio 3.
build.gradle文件中不再接受以下代码段.
applicationVariants.all { variant ->
variant.outputs.each { out ->
def oFile =out.outputFile // This line causes failure
//...
}
}
Run Code Online (Sandbox Code Playgroud)
错误是一个简单的"无效",但智能感知它是自动完成的.
检查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)
Run Code Online (Sandbox Code Playgroud)
我在Gradle 4上找不到任何文档.这可能是一个被弃用的bug或函数吗?