gpt4 book ai didi

Android gradle apk拆分,在代码中获取versionCode和versionName

转载 作者:行者123 更新时间:2023-11-29 01:09:24 29 4
gpt4 key购买 nike

我们开始拆分 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。为什么?我们想要获取这些值,因为我们想要在设置下显示它们。

最佳答案

简而言之,改成这样,问题就解决了:

PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
String version = pInfo.versionName;
int verCode = pInfo.versionCode;

在我们拆分我们的 APK 后,以下内容并没有给我们正确的版本名称和版本代码。我想发生的事情是 BuildConfig.java 是在成绩同步期间生成的。

String versionName = BuildConfig.VERSION_NAME;
int versionCode = BuildConfig.VERSION_CODE;

也许这就是为什么它已过时并且与我们的实际版本代码不匹配的原因,我们的实际版本代码已被以下两行 gradle 覆盖:

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

关于Android gradle apk拆分,在代码中获取versionCode和versionName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44317187/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com