Android Studio 3.0:Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated

时间:2022-06-01 20:58:43

Android Studio 3.0指定apk输出目录的方法报错:

Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

原因是Android Gradle Plugin 3.0修改了变体输出相关的api导致。

修改如下:

  • 使用all()替换 each()
  • 使用outputFileName 替换 output.outputFile,这个只改变输出apk包名。
// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}