将签名信息添加到 gradle 中的 apk 文件名
Add signing info to apk file name in gradle
在我的例子中,旧的 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"
}
}
在我的例子中,旧的 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"
}
}