我们开始拆分 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})"
这是检索versionName
和versionCode
的方法:
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/