在gradle

时间:2017-09-29 09:49:23

标签: android android-studio android-gradle android-app-signing

就我而言,旧的apk文件名包含未对齐和未签名的签名信息。使用以下方法在模块gradle文件中重命名了这些旧文件名:

 applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = new File(
                output.outputFile.parent,
                output.outputFile.name.replace(".apk", "-${variant.versionCode}-${variant.versionName}.apk"))
    }
}

版本代码和版本名称设置如下:

versionCode buildNumber()
versionName "${versionMajor}.${versionMinor}"

在此重命名的结果中,签名信息(未对齐或未签名)位于变体版本代码之前。

现在我正在使用gradle:3.0.0-beta6。因此我无法再使用旧方法,因为outputFile已更改为只读且无法重命名。现在我尝试在gradle中添加一个新的重命名方法,如下所示:

android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${archivesBaseName}-${variant.baseName}-${variant.versionCode}-${variant.versionName}.apk"
    }
}

有了这个新的apk名称几乎看起来像旧的,但baseName和versionCode之间缺少签名信息。 该应用仍然是未签名的,因此应该有一个未签名的信息。

有没有人知道如何在没有硬编码的情况下添加此信息?

如果应用程序已签名,此信息应该会消失,但如果可以,则不会更改重命名方法。

1 个答案:

答案 0 :(得分:2)

只是有人正在搜索这个问题,我用这段代码解决了这个问题:

 android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${archivesBaseName}-${variant.baseName}${variant.variantData.isSigned()?"":"-unsigned"}-${variant.versionCode}-${variant.versionName}.apk"
    }
}