2

您好朋友,当使用新的 android studio 版本的 proguard 规则时,
我在 app.gradle 文件中面临一个问题3.1.3。它在旧工作室版本上正常工作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")) } } } } }

纳克斯,

4

2 回答 2

3

对于 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

于 2020-01-21T10:59:59.853 回答
0

变体输出不再提供 outputFile 属性。你应该能够得到它:

def variantOutput = ...
def outputFile

try
{
    outputFile = variantOutput.outputFile
}
catch (Exception ex)
{
    def packageTask = variantOutput.packageApplication
    outputFile = packageTask.outputFile
}
于 2018-08-18T18:39:46.453 回答