在我的情况下,旧的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"
}
}