Skip to content

Commit 0c156cc

Browse files
authored
Merge pull request #3028 from DataDog/tvaleev/feature/RUM-12633-merge-develop
RUM-12633: Merge `develop` into `cronet` feature branch
2 parents baeb6e7 + f696c88 commit 0c156cc

File tree

179 files changed

+4646
-4004
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

179 files changed

+4646
-4004
lines changed

CHANGELOG.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,49 @@
1+
# 3.3.0 / 2025-11-18
2+
3+
## What's Changed
4+
5+
* [FEATURE] Feature flags. See [#2982](https://github.com/DataDog/dd-sdk-android/pull/2982) and [#2879](https://github.com/DataDog/dd-sdk-android/pull/2879)
6+
* [FEATURE] Feature flags: Apply readme suggestions. See [#2988](https://github.com/DataDog/dd-sdk-android/pull/2988)
7+
* [FEATURE] Feature flags: Fix detekt violations in the flags module. See [#2994](https://github.com/DataDog/dd-sdk-android/pull/2994)
8+
* [FEATURE] Feature flags context management. See [#2886](https://github.com/DataDog/dd-sdk-android/pull/2886)
9+
* [FEATURE] Feature flags: Send exposures as batches. See [#2895](https://github.com/DataDog/dd-sdk-android/pull/2895)
10+
* [FEATURE] Feature flags: Add a persistence layer. See [#2898](https://github.com/DataDog/dd-sdk-android/pull/2898)
11+
* [FEATURE] Feature flags: `DatadogSite` extension for Flags endpoint. See [#2922](https://github.com/DataDog/dd-sdk-android/pull/2922)
12+
* [FEATURE] Feature flags: `Flags.enable` and `FlagsClient` APIs. See [#2900](https://github.com/DataDog/dd-sdk-android/pull/2900)
13+
* [FEATURE] Feature flags: Support custom endpoints for exposures. See [#2942](https://github.com/DataDog/dd-sdk-android/pull/2942)
14+
* [FEATURE] Feature flags: Custom flagging endpoint and assignment download refactoring. See [#2917](https://github.com/DataDog/dd-sdk-android/pull/2917)
15+
* [FEATURE] Feature flags: RUM Evaluation Tracking. See [#2926](https://github.com/DataDog/dd-sdk-android/pull/2926)
16+
* [FEATURE] Feature flags: Add `CountDownLatch` to `FlagsRepository`. See [#2947](https://github.com/DataDog/dd-sdk-android/pull/2947)
17+
* [FEATURE] Feature flags: Add telemetry for critical paths. See [#2952](https://github.com/DataDog/dd-sdk-android/pull/2952)
18+
* [FEATURE] Feature flags: Generic resolve method. See [#2923](https://github.com/DataDog/dd-sdk-android/pull/2923)
19+
* [FEATURE] Feature flags: Generate `ExposureEvent` from schema. See [#2957](https://github.com/DataDog/dd-sdk-android/pull/2957)
20+
* [FEATURE] Feature flags: Remove redundant `featureflags` subpackage. See [#2966](https://github.com/DataDog/dd-sdk-android/pull/2966)
21+
* [FEATURE] Feature flags: Support for `PROVIDER_NOT_READY` state. See [#2967](https://github.com/DataDog/dd-sdk-android/pull/2967)
22+
* [FEATURE] Feature flags: Graceful mode and error logging policies. See [#2963](https://github.com/DataDog/dd-sdk-android/pull/2963)
23+
* [FEATURE] Feature flags: Update documentation. See [#2955](https://github.com/DataDog/dd-sdk-android/pull/2955)
24+
* [FEATURE] Feature flags: Allow blank targeting keys. See [#2981](https://github.com/DataDog/dd-sdk-android/pull/2981)
25+
* [BUGFIX] Fix GraphQL operation type header. See [#2956](https://github.com/DataDog/dd-sdk-android/pull/2956)
26+
* [BUGFIX] Fix synthetic ids logging in `RumViewScope`. See [#2958](https://github.com/DataDog/dd-sdk-android/pull/2958)
27+
* [BUGFIX] Fix `RumWindowCallbacksRegistry` for multiple SDK instances. See [#3003](https://github.com/DataDog/dd-sdk-android/pull/3003)
28+
* [BUGFIX] Fix vital events duplication in Feature Operations. See [#2977](https://github.com/DataDog/dd-sdk-android/pull/2977)
29+
* [IMPROVEMENT] Support sending anonymous user ids in logs. See [#2945](https://github.com/DataDog/dd-sdk-android/pull/2945)
30+
* [IMPROVEMENT] Feature flags: Fix and improve tests, context management. See [#2896](https://github.com/DataDog/dd-sdk-android/pull/2896)
31+
* [IMPROVEMENT] Refactor `FlagsProvider` and `FlagsClient` into one. See [#2899](https://github.com/DataDog/dd-sdk-android/pull/2899)
32+
* [IMPROVEMENT] Support long task reporting for multiple SDK instances. See [#2934](https://github.com/DataDog/dd-sdk-android/pull/2934)
33+
* [IMPROVEMENT] `MIGRATION.MD` update for missing SDK v3 changes. See [#2936](https://github.com/DataDog/dd-sdk-android/pull/2936)
34+
* [IMPROVEMENT] Update RUM Schema to include app launch vitals. See [#2937](https://github.com/DataDog/dd-sdk-android/pull/2937)
35+
* [IMPROVEMENT] Trace: Handle OTEL reserved attributes when using `AttributeKeys`. See [#2946](https://github.com/DataDog/dd-sdk-android/pull/2946)
36+
* [IMPROVEMENT] Use stub `Executor` for `WorkerParameters` forgery factory. See [#2949](https://github.com/DataDog/dd-sdk-android/pull/2949)
37+
* [IMPROVEMENT] Do not create a new session for TTID. See [#2954](https://github.com/DataDog/dd-sdk-android/pull/2954)
38+
* [IMPROVEMENT] Add support of `oneOf(primitive|object)` in the json parser generator. See [#2972](https://github.com/DataDog/dd-sdk-android/pull/2972)
39+
* [IMPROVEMENT] Pass synthetic ids to RUM earlier in benchmark app. See [#2959](https://github.com/DataDog/dd-sdk-android/pull/2959)
40+
* [IMPROVEMENT] Update RUM schema. See [#2976](https://github.com/DataDog/dd-sdk-android/pull/2976)
41+
* [IMPROVEMENT] Updating `MIGRATION.MD` with the default sampling rate. See [#2995](https://github.com/DataDog/dd-sdk-android/pull/2995)
42+
* [IMPROVEMENT] Add internal `disableJankStats` config option. See [#3000](https://github.com/DataDog/dd-sdk-android/pull/3000)
43+
* [MAINTENANCE] Provide SDK commit SHA1 to the Shopist App. See [#2993](https://github.com/DataDog/dd-sdk-android/pull/2993)
44+
* [MAINTENANCE] Fix detekt issues. See [#2885](https://github.com/DataDog/dd-sdk-android/pull/2885)
45+
* [MAINTENANCE] Remove unused `isConstantClass` variable. See [#2984](https://github.com/DataDog/dd-sdk-android/pull/2984)
46+
147
# 3.2.0 / 2025-10-13
248

349
* [FEATURE] Support Apollo GraphQL. See [#2845](https://github.com/DataDog/dd-sdk-android/pull/2845)

MIGRATION.MD

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,23 @@ Replacement hints:
155155

156156
The OkHttp instrumentation (`com.datadoghq:dd-sdk-android-okhttp:x.x.x`) doesn't require desugaring support. However few migration actions may be necessary.
157157

158+
The default sample rate for the `traceSampler` got increased to 100% with the Android SDK version `3.0.0`.
159+
160+
To keep 20% sampling rate you have to specify it explicitly:
161+
```kotlin
162+
private val okHttpClient = OkHttpClient.Builder()
163+
.addInterceptor(
164+
DatadogInterceptor.Builder(tracedHosts)
165+
.setTraceSampleRate(20f)
166+
.build()
167+
)
168+
.addNetworkInterceptor(
169+
TracingInterceptor.Builder(tracedHosts)
170+
.setTraceSampleRate(20f)
171+
.build()
172+
)
173+
174+
```
158175

159176
API changes:
160177

buildSrc/src/main/kotlin/com/datadog/gradle/config/AndroidConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ object AndroidConfig {
2020
const val MIN_SDK_FOR_AUTO = 29
2121
const val BUILD_TOOLS_VERSION = "36.0.0"
2222

23-
val VERSION = Version(3, 3, 0, Version.Type.Snapshot)
23+
val VERSION = Version(3, 4, 0, Version.Type.Snapshot)
2424
}
2525

2626
// TODO RUM-628 Switch to Java 17 bytecode

ci/pipelines/default-pipeline.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ analysis:detekt-custom:
102102
- curl -sSLO https://github.com/detekt/detekt/releases/download/v1.23.4/detekt-cli-1.23.4-all.jar
103103
- ./gradlew :dd-sdk-android-core:customDetektRules
104104
- ./gradlew :dd-sdk-android-internal:customDetektRules
105+
- ./gradlew :features:dd-sdk-android-flags:customDetektRules
105106
- ./gradlew :features:dd-sdk-android-logs:customDetektRules
106107
- ./gradlew :features:dd-sdk-android-ndk:customDetektRules
107108
- ./gradlew :features:dd-sdk-android-rum:customDetektRules

dd-sdk-android-core/api/apiSurface

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class com.datadog.android._InternalProxy
3131
fun error(String, Throwable? = null)
3232
fun error(String, String?, String?)
3333
val _telemetry: _TelemetryProxy
34+
fun setMetricTelemetrySampleRateBypass(Float)
3435
fun setCustomAppVersion(String)
3536
companion object
3637
fun allowClearTextHttp(com.datadog.android.core.configuration.Configuration.Builder): com.datadog.android.core.configuration.Configuration.Builder
@@ -68,7 +69,7 @@ interface com.datadog.android.api.SdkCore
6869
data class com.datadog.android.api.context.AccountInfo
6970
constructor(String, String? = null, Map<String, Any?> = emptyMap())
7071
data class com.datadog.android.api.context.DatadogContext
71-
constructor(com.datadog.android.DatadogSite, String, String, String, String, String, String, String, TimeInfo, ProcessInfo, NetworkInfo, DeviceInfo, UserInfo, AccountInfo?, com.datadog.android.privacy.TrackingConsent, String?, Map<String, Map<String, Any?>>)
72+
constructor(com.datadog.android.DatadogSite, String, String, String, String, Int, String, String, String, TimeInfo, ProcessInfo, NetworkInfo, DeviceInfo, UserInfo, AccountInfo?, com.datadog.android.privacy.TrackingConsent, String?, Map<String, Map<String, Any?>>)
7273
data class com.datadog.android.api.context.DeviceInfo
7374
constructor(String, String, String, DeviceType, String, String, String, String, String, Int?, LocaleInfo)
7475
enum com.datadog.android.api.context.DeviceType
@@ -378,6 +379,7 @@ object com.datadog.android.log.LogAttributes
378379
const val APPLICATION_PACKAGE: String
379380
const val APPLICATION_VERSION: String
380381
const val ENV: String
382+
const val SERVICE: String
381383
const val DATE: String
382384
const val DB_INSTANCE: String
383385
const val DB_OPERATION: String

dd-sdk-android-core/api/dd-sdk-android-core.api

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ public final class com/datadog/android/BuildConfig {
33
public static final field DEBUG Z
44
public static final field LIBRARY_PACKAGE_NAME Ljava/lang/String;
55
public static final field LOGCAT_ENABLED Ljava/lang/Boolean;
6+
public static final field SDK_COMMIT_SHA1 Ljava/lang/String;
67
public static final field SDK_VERSION_CODE I
78
public static final field SDK_VERSION_NAME Ljava/lang/String;
89
public fun <init> ()V
@@ -74,6 +75,7 @@ public final class com/datadog/android/_InternalProxy {
7475
public static final field Companion Lcom/datadog/android/_InternalProxy$Companion;
7576
public final fun get_telemetry ()Lcom/datadog/android/_InternalProxy$_TelemetryProxy;
7677
public final fun setCustomAppVersion (Ljava/lang/String;)V
78+
public final fun setMetricTelemetrySampleRateBypass (F)V
7779
}
7880

7981
public final class com/datadog/android/_InternalProxy$Companion {
@@ -162,26 +164,27 @@ public final class com/datadog/android/api/context/AccountInfo {
162164
}
163165

164166
public final class com/datadog/android/api/context/DatadogContext {
165-
public fun <init> (Lcom/datadog/android/DatadogSite;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/TimeInfo;Lcom/datadog/android/api/context/ProcessInfo;Lcom/datadog/android/api/context/NetworkInfo;Lcom/datadog/android/api/context/DeviceInfo;Lcom/datadog/android/api/context/UserInfo;Lcom/datadog/android/api/context/AccountInfo;Lcom/datadog/android/privacy/TrackingConsent;Ljava/lang/String;Ljava/util/Map;)V
167+
public fun <init> (Lcom/datadog/android/DatadogSite;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/TimeInfo;Lcom/datadog/android/api/context/ProcessInfo;Lcom/datadog/android/api/context/NetworkInfo;Lcom/datadog/android/api/context/DeviceInfo;Lcom/datadog/android/api/context/UserInfo;Lcom/datadog/android/api/context/AccountInfo;Lcom/datadog/android/privacy/TrackingConsent;Ljava/lang/String;Ljava/util/Map;)V
166168
public final fun component1 ()Lcom/datadog/android/DatadogSite;
167-
public final fun component10 ()Lcom/datadog/android/api/context/ProcessInfo;
168-
public final fun component11 ()Lcom/datadog/android/api/context/NetworkInfo;
169-
public final fun component12 ()Lcom/datadog/android/api/context/DeviceInfo;
170-
public final fun component13 ()Lcom/datadog/android/api/context/UserInfo;
171-
public final fun component14 ()Lcom/datadog/android/api/context/AccountInfo;
172-
public final fun component15 ()Lcom/datadog/android/privacy/TrackingConsent;
173-
public final fun component16 ()Ljava/lang/String;
174-
public final fun component17 ()Ljava/util/Map;
169+
public final fun component10 ()Lcom/datadog/android/api/context/TimeInfo;
170+
public final fun component11 ()Lcom/datadog/android/api/context/ProcessInfo;
171+
public final fun component12 ()Lcom/datadog/android/api/context/NetworkInfo;
172+
public final fun component13 ()Lcom/datadog/android/api/context/DeviceInfo;
173+
public final fun component14 ()Lcom/datadog/android/api/context/UserInfo;
174+
public final fun component15 ()Lcom/datadog/android/api/context/AccountInfo;
175+
public final fun component16 ()Lcom/datadog/android/privacy/TrackingConsent;
176+
public final fun component17 ()Ljava/lang/String;
177+
public final fun component18 ()Ljava/util/Map;
175178
public final fun component2 ()Ljava/lang/String;
176179
public final fun component3 ()Ljava/lang/String;
177180
public final fun component4 ()Ljava/lang/String;
178181
public final fun component5 ()Ljava/lang/String;
179-
public final fun component6 ()Ljava/lang/String;
182+
public final fun component6 ()I
180183
public final fun component7 ()Ljava/lang/String;
181184
public final fun component8 ()Ljava/lang/String;
182-
public final fun component9 ()Lcom/datadog/android/api/context/TimeInfo;
183-
public final fun copy (Lcom/datadog/android/DatadogSite;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/TimeInfo;Lcom/datadog/android/api/context/ProcessInfo;Lcom/datadog/android/api/context/NetworkInfo;Lcom/datadog/android/api/context/DeviceInfo;Lcom/datadog/android/api/context/UserInfo;Lcom/datadog/android/api/context/AccountInfo;Lcom/datadog/android/privacy/TrackingConsent;Ljava/lang/String;Ljava/util/Map;)Lcom/datadog/android/api/context/DatadogContext;
184-
public static synthetic fun copy$default (Lcom/datadog/android/api/context/DatadogContext;Lcom/datadog/android/DatadogSite;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/TimeInfo;Lcom/datadog/android/api/context/ProcessInfo;Lcom/datadog/android/api/context/NetworkInfo;Lcom/datadog/android/api/context/DeviceInfo;Lcom/datadog/android/api/context/UserInfo;Lcom/datadog/android/api/context/AccountInfo;Lcom/datadog/android/privacy/TrackingConsent;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)Lcom/datadog/android/api/context/DatadogContext;
185+
public final fun component9 ()Ljava/lang/String;
186+
public final fun copy (Lcom/datadog/android/DatadogSite;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/TimeInfo;Lcom/datadog/android/api/context/ProcessInfo;Lcom/datadog/android/api/context/NetworkInfo;Lcom/datadog/android/api/context/DeviceInfo;Lcom/datadog/android/api/context/UserInfo;Lcom/datadog/android/api/context/AccountInfo;Lcom/datadog/android/privacy/TrackingConsent;Ljava/lang/String;Ljava/util/Map;)Lcom/datadog/android/api/context/DatadogContext;
187+
public static synthetic fun copy$default (Lcom/datadog/android/api/context/DatadogContext;Lcom/datadog/android/DatadogSite;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/TimeInfo;Lcom/datadog/android/api/context/ProcessInfo;Lcom/datadog/android/api/context/NetworkInfo;Lcom/datadog/android/api/context/DeviceInfo;Lcom/datadog/android/api/context/UserInfo;Lcom/datadog/android/api/context/AccountInfo;Lcom/datadog/android/privacy/TrackingConsent;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)Lcom/datadog/android/api/context/DatadogContext;
185188
public fun equals (Ljava/lang/Object;)Z
186189
public final fun getAccountInfo ()Lcom/datadog/android/api/context/AccountInfo;
187190
public final fun getAppBuildId ()Ljava/lang/String;
@@ -200,6 +203,7 @@ public final class com/datadog/android/api/context/DatadogContext {
200203
public final fun getUserInfo ()Lcom/datadog/android/api/context/UserInfo;
201204
public final fun getVariant ()Ljava/lang/String;
202205
public final fun getVersion ()Ljava/lang/String;
206+
public final fun getVersionCode ()I
203207
public fun hashCode ()I
204208
public fun toString ()Ljava/lang/String;
205209
}
@@ -1020,6 +1024,7 @@ public final class com/datadog/android/log/LogAttributes {
10201024
public static final field RUM_APPLICATION_ID Ljava/lang/String;
10211025
public static final field RUM_SESSION_ID Ljava/lang/String;
10221026
public static final field RUM_VIEW_ID Ljava/lang/String;
1027+
public static final field SERVICE Ljava/lang/String;
10231028
public static final field SERVICE_NAME Ljava/lang/String;
10241029
public static final field SOURCE Ljava/lang/String;
10251030
public static final field SOURCE_TYPE Ljava/lang/String;

dd-sdk-android-core/build.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ android {
6565
"SDK_VERSION_NAME",
6666
"\"${AndroidConfig.VERSION.name}\""
6767
)
68+
buildConfigField(
69+
"String",
70+
"SDK_COMMIT_SHA1",
71+
"\"${providers.exec {
72+
commandLine("git", "rev-parse", "HEAD")
73+
}.standardOutput.asText.get().trim()}\""
74+
)
6875
}
6976

7077
namespace = "com.datadog.android"

dd-sdk-android-core/src/main/kotlin/com/datadog/android/_InternalProxy.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
package com.datadog.android
88

9+
import androidx.annotation.FloatRange
910
import com.datadog.android.api.SdkCore
1011
import com.datadog.android.api.feature.Feature
1112
import com.datadog.android.api.feature.FeatureScope
@@ -74,6 +75,12 @@ class _InternalProxy internal constructor(
7475
@Suppress("PropertyName")
7576
val _telemetry: _TelemetryProxy = _TelemetryProxy(sdkCore)
7677

78+
fun setMetricTelemetrySampleRateBypass(
79+
@FloatRange(from = 0.0, to = 100.0) sampleRate: Float
80+
) {
81+
(sdkCore as? DatadogCore)?.coreFeature?.metricTelemetrySampleRateBypass = sampleRate
82+
}
83+
7784
fun setCustomAppVersion(version: String) {
7885
val coreFeature = (sdkCore as? DatadogCore)?.coreFeature
7986
coreFeature?.packageVersionProvider?.version = version

dd-sdk-android-core/src/main/kotlin/com/datadog/android/api/context/DatadogContext.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.datadog.android.privacy.TrackingConsent
2020
* [Unified Service Tagging](https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging).
2121
* @property version the version of the application that data is generated from. Used for
2222
* [Unified Service Tagging](https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging).
23+
* @property versionCode the version code of the application.
2324
* @property variant the name of the application variant (if applies).
2425
* @property source denotes the mobile application's platform, such as "ios" or "flutter" that
2526
* data is generated from. See: Datadog [Reserved Attributes](https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#reserved-attributes).
@@ -41,6 +42,7 @@ data class DatadogContext(
4142
val service: String,
4243
val env: String,
4344
val version: String,
45+
val versionCode: Int,
4446
val variant: String,
4547
val source: String,
4648
val sdkVersion: String,

dd-sdk-android-core/src/main/kotlin/com/datadog/android/core/internal/CoreFeature.kt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ internal class CoreFeature(
188188
internal var batchSize: BatchSize = BatchSize.MEDIUM
189189
internal var uploadFrequency: UploadFrequency = UploadFrequency.AVERAGE
190190
internal var batchProcessingLevel: BatchProcessingLevel = BatchProcessingLevel.MEDIUM
191+
internal var metricTelemetrySampleRateBypass: Float? = null
191192
internal var ndkCrashHandler: NdkCrashHandler = NoOpNdkCrashHandler()
192193

193194
@Volatile
@@ -487,7 +488,7 @@ internal class CoreFeature(
487488
}
488489
}
489490

490-
timeProvider = KronosTimeProvider(this)
491+
timeProvider = KronosTimeProvider(this, internalLogger)
491492
}
492493
}
493494

@@ -502,13 +503,16 @@ internal class CoreFeature(
502503
}
503504

504505
private fun readApplicationInformation(appContext: Context, configuration: Configuration) {
506+
val packageInfo = getPackageInfo(appContext)
507+
508+
val versionName = packageInfo?.versionName
509+
510+
@Suppress("DEPRECATION")
511+
val versionCode = packageInfo?.versionCode
512+
505513
packageVersionProvider = DefaultAppVersionProvider(
506-
getPackageInfo(appContext)?.let {
507-
// we need to use the deprecated method because getLongVersionCode method is only
508-
// available from API 28 and above
509-
@Suppress("DEPRECATION")
510-
it.versionName ?: it.versionCode.toString()
511-
} ?: DEFAULT_APP_VERSION
514+
initialVersion = versionName ?: versionCode?.toString() ?: DEFAULT_APP_VERSION,
515+
versionCode = versionCode ?: 0
512516
)
513517
clientToken = configuration.clientToken
514518
serviceName = configuration.service ?: appContext.packageName

0 commit comments

Comments
 (0)