From 7d3cef33a9b18fe0fdc771f351d2dfbc40f2f7c5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 May 2024 15:06:47 +0200 Subject: [PATCH] Read versionCode from the Manifest, since `BuildConfig.VERSION_CODE` does not contain the correct last digit. --- .../kotlin/io/element/android/x/di/AppModule.kt | 3 ++- .../libraries/androidutils/system/SystemUtils.kt | 14 ++++++++++++++ .../android/libraries/core/meta/BuildMeta.kt | 2 +- .../libraries/matrix/test/core/BuildMeta.kt | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt index a121e0a6fb..3187cae410 100644 --- a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt +++ b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt @@ -26,6 +26,7 @@ import dagger.Provides import io.element.android.appconfig.ApplicationConfig import io.element.android.features.messages.impl.timeline.components.customreaction.DefaultEmojibaseProvider import io.element.android.features.messages.impl.timeline.components.customreaction.EmojibaseProvider +import io.element.android.libraries.androidutils.system.getVersionCodeFromManifest import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildType @@ -87,7 +88,7 @@ object AppModule { // TODO EAx Config.LOW_PRIVACY_LOG_ENABLE, lowPrivacyLoggingEnabled = false, versionName = BuildConfig.VERSION_NAME, - versionCode = BuildConfig.VERSION_CODE, + versionCode = context.getVersionCodeFromManifest(), gitRevision = BuildConfig.GIT_REVISION, gitBranchName = BuildConfig.GIT_BRANCH_NAME, flavorDescription = BuildConfig.FLAVOR_DESCRIPTION, diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/SystemUtils.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/SystemUtils.kt index 737eab7ac7..49e055cc29 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/SystemUtils.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/SystemUtils.kt @@ -28,6 +28,7 @@ import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.annotation.ChecksSdkIntAtLeast import androidx.annotation.RequiresApi +import androidx.core.content.pm.PackageInfoCompat import io.element.android.libraries.androidutils.R import io.element.android.libraries.androidutils.compat.getApplicationInfoCompat import io.element.android.libraries.core.mimetype.MimeTypes @@ -47,6 +48,19 @@ fun Context.getApplicationLabel(packageName: String): String { } } +/** + * Retrieve the versionCode from the Manifest. + * The value is more accurate than BuildConfig.VERSION_CODE, as it is correct according to the + * computation in the `androidComponents` block of the app build.gradle.kts file. + * In other words, the last digit (for the architecture) will be set, whereas BuildConfig.VERSION_CODE + * last digit will always be 0. + */ +fun Context.getVersionCodeFromManifest(): Long { + return PackageInfoCompat.getLongVersionCode( + packageManager.getPackageInfo(packageName, 0) + ) +} + // ============================================================================================================== // Clipboard helper // ============================================================================================================== diff --git a/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt b/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt index ad5581f631..a9cb78548f 100644 --- a/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt +++ b/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt @@ -25,7 +25,7 @@ data class BuildMeta( val applicationId: String, val lowPrivacyLoggingEnabled: Boolean, val versionName: String, - val versionCode: Int, + val versionCode: Long, val gitRevision: String, val gitBranchName: String, val flavorDescription: String, diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt index 2a70a56051..52c15d05a4 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt @@ -28,7 +28,7 @@ fun aBuildMeta( applicationId: String = "", lowPrivacyLoggingEnabled: Boolean = true, versionName: String = "", - versionCode: Int = 0, + versionCode: Long = 0, gitRevision: String = "", gitBranchName: String = "", flavorDescription: String = "",