Android Gradle:无法设置只读属性的值'outputFile'



我通过sunmi打印机从github下载了一个Android项目,以测试我的pos打印机,但是当开始构建并syncproject时,它给了我这个gradle error

错误:无法为类型为 com.android.build.gradle.internal.api.ApkVariantOutputImpl 的 ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[], versionCode=9, versionName=v2.7.2}} 设置只读属性 'outputFile' 的值。

这里是格拉德尔:

apply plugin: 'com.android.application'
android {
signingConfigs {
release {
keyAlias 'key0'
keyPassword '123456'
storeFile file('../app/temp.jks')
storePassword '123456'
}
debug {
keyAlias 'key0'
keyPassword '123456'
storeFile file('../app/temp.jks')
storePassword '123456'
}
}
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.test.printertestdemop1"
minSdkVersion 21
targetSdkVersion 23
versionCode 9
versionName "v2.7.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
lintOptions {
abortOnError false
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
android.applicationVariants.all {
variant ->
variant.outputs.each {
output -> output.outputFile = new File(output.outputFile.parent, "PrinterDemo_" + defaultConfig.versionName + "_P1.apk");
}
}

}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:23.3.0'
implementation 'com.android.support:recyclerview-v7:23.3.0'
implementation 'com.sunmi:sunmiui:latest.release'
implementation files('libs/core-3.3.0.jar')
}

根据此参考,变量的输出不提供设置输出文件名的 setter 方法。因此,它不适用于较新版本的Gradle API

解决方案:您可以使用 defaultConfig 块中的setProperty()方法来设置更改基础 apk 名称,如下所示,

defaultConfig {
....
setProperty("archivesBaseName", "your apk name here")
....
}

相关内容

最新更新