在发行版本上覆盖versionName

时间:2019-09-10 20:40:51

标签: android gradle android-gradle-plugin

我很难找到一个解决方案来覆盖项目的versionName仅作为发行版本的一部分,所以基本上在运行assembleRelease时任务。

我的第一次尝试是:

android.applicationVariants.all { variant ->
    if (variant.buildType.name == "release") {
        variant.outputs.each { output ->
            println("******* Overriding versionName ******* ")
            output.versionNameOverride = "x.y.z" // getReleaseVersion()
        }
    }
}

这似乎可行,几乎...:

 adb shell dumpsys package com.myapp | grep "versionName"

确认版本已被覆盖,但是问题是上面的代码块也被调用用于调试版本,这是我要避免的事情。

经过更多搜索后,我偶然发现了以下建议:

android.applicationVariants.all { variant ->
    if (variant.buildType.name == "release") {
        variant.assemble.doLast {
            variant.outputs.each { output ->
                println("******* Overriding versionName ********")
                output.versionNameOverride = "x.y.z" //getReleaseVersion()
            }
        }
    }
}

这会将outputs的迭代包装为variant.assemble.doLast { }

现在此代码实际上仅是为了发布而调用的,但是,当从apk提取版本时,存在默认版本,因此事实证明该版本未被覆盖...

我在配置gradle任务方面经验不足,不胜感激如何解决此问题。

0 个答案:

没有答案