你好朋友,
当在新的Android Studio版本中使用proguard规则为3.1.3
时,app.gradle文件面临一个问题。它可以在旧Studio版本2.3.3
上正常工作。
我的完整错误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.
App.Gradle文件:
android {
.....................
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
}
}
}
}
}
感谢,
答案 0 :(得分:2)
对于Gradle 3.0 + **
android {
...
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.all {
def formattedDate = new Date().format('yyyyMMddHHmmss')
def flavor = variant.name
def versionName = variant.versionName
outputFileName = "AppName_${versionName}_${flavor}_${formattedDate}.apk"
}
}
}
}
...
}
结果:
AppName_release_1_20200121175123.apk
答案 1 :(得分:0)
variant输出不再提供outputFile属性。您应该能够像这样得到它:
def variantOutput = ...
def outputFile
try
{
outputFile = variantOutput.outputFile
}
catch (Exception ex)
{
def packageTask = variantOutput.packageApplication
outputFile = packageTask.outputFile
}