Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory). Suggestion: add 'tools:replace="android:appComponentFactory"' to element at AndroidManifest.xml:7:5-14:19 to override.
The Datadog SDK for Android uses some AndroidX artifacts. Make sure you’re using AndroidX dependencies too (you can migrate your code to AndroidX using the Refactor > Migrate to AndroidX menu in Android Studio).
You also need to set the android.useAndroidX and android.enableJetifier properties to true in your project’s gradle.properties file.
Duplicate class com.google.common.util.concurrent.ListenableFuture found in modules jetified-guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0) and jetified-listenablefuture-1.0.jar (com.google.guava:listenablefuture:1.0)
This issue can occur if your dependencies rely on different Guava artifacts as the Datadog SDK for Android. The SDK uses AndroidX's WorkManager, which depends on a specific Guava dependency.
Solve this issue by excluding the conflicting module from your dependency:
implementation ("cloud.flashcat:dd-sdk-android:1.3.0") {
exclude group: 'com.google.guava', module: 'listenablefuture'
}
Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20)
You need to add the following rules to your buildscript (more details here):
dependencies {
constraints {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.10") {
because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
}
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10") {
because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
}
}
}If you encounter another issue when building your application with the Datadog SDK for Android, open an issue on the DataDog/dd-sdk-android Github repository with as many details as you can.
If your application crashes with a similar message, this is most likely due to a conflict in the Android WorkManager dependency. The dd-sdk-android library uses the AndroidX androidx.work:work-runtime artifact with a version above 2.2.0. There was a change in the signature of the WorkRequest.Builder class, that make modules built with a previous version incompatible. Make sure your modules and dependency target the same version of the androidx.work:work-runtime library.
You can check which version your dependencies are using by typing the following command in a shell prompt:
./gradlew :app:dependenciesCrash with java.lang.NoSuchMethodError: No static method metafactory(…) or java.lang.BootstrapMethodError: Exception from call site #1 bootstrap method
If you're using OkHttp version 3.13.0 or above, you may run into this crash when initializing the SDK. This happens because from this version on, OkHttp uses Java 1.8, including the Java lambda features, which are not available in Android.
You can fix this issue by forcing the Android compiler to use Java 8 compatibility when building your application. To do so, add the following code to your application's build.gradle.kts script.
android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
// optionally if you're using Kotlin
kotlinOptions {
jvmTarget = "1.8"
}If you think the SDK does not behave as it should, make sure you set the library's verbosity to VERBOSE before running your application, as follows. It prints relevant error messages in the Logcat that can help you locate the source of the problem.
Datadog.setVerbosity(Log.VERBOSE)Make sure that you initialized the SDK using a valid Client Token and you are targeting the correct Datadog site. Otherwise, if the library's logs are enabled, you should see the following message in the Logcat :
"$batchInfo failed because your token is invalid; the batch was dropped. Make sure that the provided token still exists and you're targeting the relevant Datadog site."
If you have a FragmentViewPager somewhere in your activities this can produce wrong View events if you are using the RUM FragmentViewTrackingStrategy.
The reason for this is the way the FragmentPagerAdapter used to work by resuming current and next fragment to be able to resolve the
animated transition from one page to another. Please note that this behaviour is deprecated in the FragmentPagerAdapter. To avoid these issues please
makes sure you switch to the new way of instantiating your FragmentPagerAdapter :
FragmentPagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)You can use RumMonitor#debug property, which once enable will show you the overlay in the application with the actual RUM view name.