Android gradle apk拆分,获取versionCode&代码中的versionName

时间:2017-06-01 21:15:05

标签: android gradle

我们开始拆分APK以减少APK尺寸。我们无法弄清楚为什么我们在代码(Java)中获得的versionCode始终是默认值。

以下是相关的gradle:

defaultConfig {
    applicationId applicationIdPrefix
    versionCode 1000
    versionName "3.3.0"

// This is the configuration we want to publish
defaultPublishConfig "productionRelease"

applicationVariants.all { variant ->
  def apkName = "$projectName-${variant.name}-v${versionString}.${baseVersionCode}.apk"

  variant.outputs.each { output ->
    // Redefine the versionCode and the apkName to include ABI when available
    def abiName = output.getFilter(OutputFile.ABI)
    def baseAbiVersionCode = project.ext.abiCodes.get(abiName)

    if (baseAbiVersionCode != null) {
      output.versionCodeOverride = variant.versionCode + baseAbiVersionCode
      output.versionNameOverride = "$versionString (${output.versionCodeOverride})"

这是检索versionNameversionCode

的方法
BuildConfig.VERSION_NAME
BuildConfig.VERSION_CODE

它们总是3.3.0和1000.为什么?我们希望获得这些值,因为我们希望在设置下显示它们。

1 个答案:

答案 0 :(得分:0)

简而言之,改为此问题已解决:

BuildConfig.java

在我们拆分APK之后,以下内容未向我们提供正确的版本名称和版本代码。我想发生的事情是String versionName = BuildConfig.VERSION_NAME; int versionCode = BuildConfig.VERSION_CODE; 是在成绩同步期间生成的。

output.versionCodeOverride = variant.versionCode + baseAbiVersionCode
output.versionNameOverride = "$versionString (${output.versionCodeOverride})".

也许这就是为什么它已经过时而且与我们的实际版本代码不符,后者用这两行gradle覆盖:

public ActionResult TestCrypto()
{
    string encryptedText = Crypto.Encrypt("123456");
    string text = "Encrypted Text : " + encryptedText + "<br/>";
    string originalText = Crypto.Decrypt(encryptedText);
    text += "Origial Text : " + originalText;
    return Content(text);
}