将签名信息添加到Gradle中的APK文件名



在我的情况下,旧的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之间缺少签名信息。该应用程序仍然未签名,因此应该有一个未签名的信息。

有人知道我如何在不进行硬编码的情况下添加此信息吗?

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

只是为了某人正在搜索此问题的情况,我用此代码解决了此问题:

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

最新更新