Skip to main content

Android SDK Changelog


April 22, 2024

  • Support configuration of OpenTelemetry Exporters to export Logs data as OpenTelemetry LogRecord.


April 19, 2024


API Desugaring is now a requirement for apps that support Android 5 and 6. This is a simple, well-supported process done by Android build tooling that backports certain Java 8 language features onto older Android versions that didn't have support. For more information, please see Google's documentation here

  • THE OpenTelemetry Release! The Embrace Android SDK now uses the OpenTelemetry Java SDK at its core.
  • This means the bulk of the telemetry is recorded as OTel signals, so they can be sent directly to OTel Collectors from the app using any Java OTLP Exporter that is compatible with Android. Telemetry types modeled by Embrace like sessions, crashes, ANRs, and logs have canonical representations as OTel signals using a combination of OTel and in-house semantic conventions.
  • The number of Embrace conventions will hopefully shrink going forward as the community comes together around a set of shared semantic conventions to standardize the world of mobile telemetry. We will build upon this new foundation in the coming releases to bring together the worlds of OpenTelemetry, mobile client performance observability, and RUM!


March 14, 2024

  • Fully support configuration cache on all Gradle versions.
  • Fix issue with active Moments being lost when a new session starts.


March 6, 2024

  • Performance Tracing improvements
    • Support configuration of OpenTelemetry Exporters to export Performance Tracing data as OpenTelemetry Spans (beta).
    • Change timestamps parameters of the APIs to use milliseconds to better align with Android developer expectations.
      • Note: timestamps that are in nanoseconds will be detected and converted for now so existing instrumentation will still work, but this will be removed in an upcoming release.
    • Increase per-session limit of spans to 500 in total.
    • New methods added:
      • "getSpan" that returns a reference to an active or recently ended EmbraceSpan.
      • "startSpan" that creates and starts a span directly.
    • New functionality for existing methods:
      • Allow custom timestamps to be specified when starting and stopping a span.
      • Support adding attributes and span events to "recordSpan".
  • Increase transparency of SDK startup by adding custom sections to traces recorded using Android system tracing libraries like androidx.tracing.
    • Note: only run Android system tracing on release builds running on real devices. Debug builds and emulators will not yield accurate data.
  • Optimize React Native JavaScript bundleId retrieval to better support CodePush (React Native only)
  • Allow configuration cache to be enabled for Gradle 8.3+
    • Note: for Gradle 8.3+, running Embrace Gradle plugin will invalidate the configuration cache


February 23, 2024

  • Improved performance and stability of NDK serialization while the app is under memory pressure
  • Added back support of OkHttp 3.13.0+, which was initially removed in this major version


February 2, 2024


The Configuration Cache feature for Gradle 8.4+ is not compatible with this release due to an issue in Gradle tooling. Please disable this in developer builds when used with this release or use an older version of Gradle.

  • Support for Gradle 8.4+
  • Plus all the performance enhancements of 6.3.0!


January 31, 2024


Gradle 8.4+ is not supported by this version when the NDK crash capture feature is off. Please use 6.3.1 to ensure all expected Gradle versions are supported.

  • A plethora of performance and reliability improvements!
    • Increased speed and efficiency of data serialization and persistence
    • Reduced amount of disk space used to save data not-yet delivered
    • Optimized thread usage for background work
    • Eliminated network requests sent when starting new sessions
    • Improved handling of network retries when the backend is too busy
    • Prioritized session delivery over other payloads
  • Capture thermal status change events by default
  • Capture CPU and GPU info by default
  • Enable all tracing functionality when SDK startup is complete


December 13, 2023

  • Removed the capture of unused beta features: strict mode violation, activity lifecycle,
  • Improved the delivery of session messages with changes in the DeliveryService class
  • Removed unused ANR process errors
  • Gzip encode HTTP requests via stream
  • Prioritize most recent api calls when limit is reached.
  • Avoid dropping session when endSession called


November 24, 2023

  • Enabled Performance Tracing by default
  • Improved build performance of the Gradle plugin
  • Improved session data delivery retries
  • Enforce network call per session limits properly
  • Fixed premature clearing of breadcrumbs on background activities


October 26, 2023

  • Removal of deprecated methods
  • Increase our minSdkVersion to API 21
  • Increase our minimum AGP to 4.0.0
  • Increase our minimum Gradle version to 6.1.1
  • Set the minimum OkHttp version to 4.0.0

We strongly recommend that Embrace customers ensure their apps meet the criteria above.


December 7, 2023

  • Fixed a validation issue when calling deprecated method logNetworkRequest.


October 10, 2023

  • Added support for tap tracking on Jetpack Compose elements.
  • Added support for the Network Span Forwarding feature that enables the propagate of a W3C-compliant traceheader in requests to Embrace so a span can be created and forwarded to the customer servers.
  • Fixed propagation of error type and message when recording incomplete network requests.
  • The SDK now captures ANR data using the ApplicationExitInfo API for Android 11+.
  • Fixed a rare issue when network logging was being done on a URLConnection whose Response is no longer accessible.
  • Fixed a bug where calling bytes() on a gzipped OkHttp response throws an exception.


September 21, 2023

  • Renamed several API interfaces to standardize naming between our SDKs to better reflect what each API does.
  • Added new API method to get the current session ID.
  • Set custom folders for native symbols to upload during build process.
  • Added Dexguard support.
  • Exposed beta API for Performacing Tracing.


August 09, 2023

  • Bug fix on retryLock function. Now the ANR monitoring is Serialized to work on a single background executor.
  • Fixed missing Unity ANR
  • Added Plugins DSL support. Please note that embrace-swazzler plugin name changed to "io.embrace.swazzler" when declared through Plugins DSL. Legacy buildscript block declaration remains as "embrace-swazzler".
  • Fixed custom breadcrumbs limit
  • Fixed an issue when capturing network content for OkHttp3 in calls with gzip content.


July 12, 2023

  • Implemented CPU and EGL device information for devices with NDK enabled.
  • Fixed a bug that caused coordinates on Jetpack Compose view to be incorrectly set at 0,0.
  • Fixed an issue in the network capture feature for customers using OkHttp3 where the empty request body was not being handled correctly.


June 27, 2023

  • Added the method getLastRunEndState() to check whether the last execution crashed or was a clean exit.
  • Fixed a duplicate resources error that failed the build in some scenarios.
  • Fixed a build-time issue reported when using Gradle 8 and configuration cache.


June 16, 2023

  • Fixed false positive ANR
  • Improvements in AppExitInfo capture logic
  • Fixed bug for network bodies using gzip compression
  • Added additional logging for unwinding native crashes
  • Fixed get obj folder swazzler issue, we changed our way of getting .so files


May 24, 2023

  • Added support for Gradle 8


May 11, 2023

  • Fixed a build time error related to disableDependencyInjection property.


May 5, 2023

  • Fixed a build time error at build time for versions 5.17.1 and 5.18.0 in some specific scenarios and related with com.squareup.okhttp3:okhttp and dependencies.


May 4, 2023

  • Core Web vitals capture from web views
  • The encoding for extracted file names is enabled for builds that use Android Gradle Plugin 4.2.1 and below. This handles build issues caused by 3rd party plugins that minify classes during the build phase.


Apr 27, 2023

  • Upgrade compileSDK to 33
  • Improvements on our CPU usage and data consumption of our delivery layer


Apr 04, 2023

  • Added the name and message of the Exception if it is used on logError or logHandledException methods.
  • Deprecated the current logPushNotification method and introduced a new one that fix compatibility issues.


Mar 21, 2023

  • Fix an error from 5.15.1 around identifying users.
  • Improvements in how data is collected after session ends, to avoid extending the app process duration.


Mar 17, 2023

  • Improvements in how data is collected after session ends, to avoid extending the app process duration.


Mar 7, 2023


This version has a known issue with Braze. If you need to use this specific version, you can avoid the known issue with the following configuration in your app/build.gradle file:

swazzler {
instrumentFirebaseMessaging = false
  • Fix first activity repeated in the timeline
  • Fixes a timing bug with ANR intervals where a check on monitorThreadLag was setting the start time to be in the beginning of an ANR interval.
  • Ignore useNewDependencyInstaller property from the swazzler block. It's now used as the unique mechanism to inject dependencies, so it's safe to remove it from your app/build.gradle file


Jan 27, 2023

  • Reduced ANRs being generated by EmbraceLogger class.
  • Added feature to capture network body information.


Jan 19, 2023

  • Fixed an issue on ndk symbols.
  • Fixed an ndk issue when building.


Jan 11, 2023

  • Capture CPU number of cores
  • Compress Proguard/R8 mapping files before uploading
  • Added logHandledException method


Dec 07, 2022

  • Automatically capture push notifications when the app is on foreground.
  • Added the ability to manually log push notifications.
  • Capture background activity
  • Power save mode changes track added


Dec 05, 2022

  • Added the ability to report the version of the Embrace React Native SDK being used.


Nov 20, 2022

  • It fixes a Gradle issue on anyone running Gradle < 6.2


Nov 28, 2022


This version has a known issue with Gradle < 6.2

  • Improved Embrace startup time


Nov 14, 2022

  • Fixed an internal exception when trying to access the jailbroken status of the device.


Nov 03, 2022

  • Improve NDK service logs to work with strict and integration mode
  • Improved the EmbraceSamples.verify() method
  • Added Profile Installer to support Baseline Profiles.


Oct 20, 2022

  • Fixed message for Ironsource and Moshi known issues.
  • Automate disabling dependency injection when using EDM4U.
  • Automate NDK Enabling for Unity and Native projects when value is default.
  • Added integration mode to identify potential issues with the SDK integration.
  • Rolled back the use of DefaultLifecycleObserver


Oct 18, 2022

  • Fixed an ANR occurring in React Native projects using a custom Javascript bundle URL.


Oct 03, 2022

  • New mechanism to auto-install Embrace dependencies. If you prefer to use the old mechanism, the new API can be disabled by setting the useNewDependencyInstaller property to false. You can check our documentation here


Oct 03, 2022

  • Fixed a lost backward compatibility with previous Unity SDK versions.
  • Fixed internal exception triggered when used androidX startup library in Unity builds.


Sep 22, 2022


This version has a known backward compatibility issue between the Unity SDK and the Android SDK

  • Removed capture_google attribute from the embrace-config.json file.


Sep 20, 2022

  • Prevent disk i/o strict mode violations for session caching.
  • Added a step to the automatic verification that validates that the SDK is receiving lifecycle events
  • Increment network timeout when uploading large mapping files.


Aug 30, 2022

  • Performance improvement: moved some disk I/O operations on startup to a worker thread.


Aug 25, 2022

  • Fixed a logic bug in how the previous signal handler was called that prevented native tombstones from being captured by the Android OS.
  • Fixed an issue that prevented the Swazzler to build on AGP versions greater or equal than 7.2.


Aug 17, 2022

  • Fixes a bug in our gradle plugin where the build sometimes failed with duplicate resource files
  • Fixes a minor bug where network intercepting triggers a log when it tries to intercept calls before Embrace is started.
  • Improve NDK crash report quality when other signal handlers are installed after Embrace has initialized


Aug 03, 2022

  • Fixes an issue where customers were having ClassNotFoundException: BuildEventsListenerRegistry for gradle versions < 6.1


Aug 02, 2022


This version has a known issue with Gradle < 6.1

  • Added Hermes support
  • Automatic integration: We added a method that does everything necessary to verify an integration in one call.
  • Added a feature flag that controls beta features. This can be manually disabled from the configuration.


Jul 18, 2022


This version has a known issue with Gradle < 6.1

  • Strict Mode was added to automatically capture serious local error logs to be sent as part of the session payload.
  • The background ANRs are not displayed by default anymore. They should be manually enabled through remote configuration.
  • Fixed an issue where the ANR duration was incorrectly reported with 1 second less.


Jun 30, 2022


This version has a known issue with Gradle < 6.1

  • ASM bytecode transformation API is now the default api.


Jun 10, 2022

  • Added support for symbols upload in Unity 2020, 2021, 2022.
  • Fixed symbols upload failure while searching .so files in a folder with another folder inside.
  • Added extra logging for NDK layer.
  • Fixed bytecode transformation with ASM.
  • Added improvement in order to skip swazzling if it's disabled for variant in old transform API.


May 27, 2022

  • Added extra logging for NDK crash.
  • Prevented NPE in native crash loading.
  • Fixed an issue in gradle task registration that was not letting the symbols files to upload.
  • React Native - Fixed an issue with the set of the bundle ID for OTA releases like CodePush


May 4, 2022

  • Fixed an issue where "Bytes in" and "Bytes out" where shown reversed when logging network requests manually.


May 2, 2022

  • Fixed a race condition that could lead to exceptions during SDK initialization.


April 22, 2022

  • Fixed an issue that prevented the SDK to use the traffic settings override for specific app versions.


April 08, 2022

  • Added backward compatibility up to AGP 3.4.0
  • Changed build ID resource injection to keep unchanged on non-minified builds.
  • Migrated to task configuration avoidance API's for task registration
  • Added improvements to SDK startup time
  • Upgrade Gson to 2.9.0.


Feb 07, 2022

  • Updated Kotlin to 1.4.32
  • Fixed stacktrace capture for React Native and Unity log messages
  • Added improvements to SDK startup time
  • Added support for encoding file names when unpacking jars to prevent clashes in case-insensitive file systems


Dec 21, 2021

  • Screenshots aren't captured by default. They should be manually requested by calling the proper methods of the SDK.


Nov 19, 2021

  • Upgrade Gson to 2.8.9
  • Added a new EmbraceCustomPathException to capture the proper custom path on connectivity errors


Oct 29, 2021

  • Added swazzling class skipping support for AGP 4.2+
  • Added swazzling rules generation support for AGP 4.2+
  • Fix an issue with ANRs caused while capturing network calls in the session


Oct 18, 2021

  • Fix an issue with missing network calls in the session


Oct 5, 2021

  • Added option to specify API key as an environment variable instead of in the config file
  • Cache device-related values that could take a long time to fetch on certain device types, to prevent ANRs.
  • Rolled back swazzling class skipping support from 4.11.0, which could cause certain network calls and taps to not be captured.
  • Removed ANDROID_ID as an input to the hashing function used create the device identifier.


Sep 1, 2021


This version has known issues and should not be used

  • Fixed a race-condition issue with the NDK crash capture that could lead to incomplete stacktrace capture
  • Added nullability decorators to improve usage from Kotlin
  • Added swazzling class skipping support for AGP 4.2+


Aug 16, 2021

  • Added support for custom Unity symbols archive name
  • Improved handling of JAR files that could not be swazzled


July 29, 2021

  • Fixed issue that could cause an ANR when capturing memory warnings.
  • Fixed issue that could cause SDK to start during an app cold start even when remote config should have disabled it.


July 15, 2021

  • Fixed compatibility issue with androidx.lifecycle 2.3.0+ when not starting the SDK on the main thread.


July 13, 2021

  • Fixed issue that could prevent capture of OkHTTP- and Volley-based network calls for certain configurations.
  • Prevent multiple attempts to add Embrace SDK dependency for certain configurations.


July 1, 2021

  • Fixed how SDK dependencies are injected, which could cause build errors for certain Gradle configurations.
  • Handle case where a project provides the same JAR twice to Gradle our Gradle transformer.
  • Fixed issue where a class could not be processed by our Gradle transformer when it contains a reference to an optional dependency that is not present in the app.


May 27, 2021

  • Fixed issue with NDK crash stack trace parsing that could fail for certain stack traces
  • Track JNI thread attachment for Unity


May 25, 2021

  • Removed all dependencies on JCenter
  • Added support for symbol upload for Unity 2020 non-exported apps


May 17, 2021

  • Fixed an issue with registering build tasks for React Native apps.


May 11, 2021

  • Fixed an issue where HTTP network calls made using the Java library could get disrupted during capture. This issue did not affect HTTPS calls or those made with Volley or OkHttp.


May 10, 2021

  • Fixed a compatibility issue with gradle 7.x.
  • Added support for automatic upload of NDK symbols for unexported Unity projects.


May 6, 2021

  • Fixed issue with bytes-in/-out values for manually recorded network calls on Unity.
  • Added exception message to manually-recorded network calls on Unity for network calls that had an error.


May 4, 2021

  • Added more flexible support for disabling swazzling based on variant.


April 30, 2021

  • Added support for Unity unhandled exceptions
  • Fixed issue with the upload of NDK symbols for Unity 2018 and injection of references to the symbols into the SDK


April 22, 2021

  • Moved from JCenter to Maven Central


April 9, 2021

  • Added method to allow overriding of the configured app ID to be overridden at runtime.
  • Modified Gradle plugin to use original JARs when no changes were needed to them. This addresses an issue with the kotlin-reflect module for Kotlin 1.4.10 and newer.
  • Improved Gradle plugin dependency injection approach to address rare race condition.
  • Fixed issue with parsing of config file that could cause changes to it to only be picked up on clean builds.
  • Fixed JSON parsing issue that could cause NDK crashes in Unity apps to be corrupted


March 18, 2021

  • Modified capture_request_content_length setting to also affect requests made with OkHTTP
  • Fixed issue that would remove Content-Length and Content-Encoding from certain captured requests
  • Send startup moment even if the app is in the foreground when the SDK is started
  • Support manual network request capture in Unity apps
  • Build will not complete if a corrupted Embrace configuration file is used and improved error output to simplify debugging of config issue


February 22, 2021

  • Added limits for number of logs per session: 250 error, 100 warning, 100 info (contact support to have these increased for your app).
  • Limit how many breadcrumbs are captured for a session at capture time rather than at the completion of a session. This limits the memory used to store breadcrumbs for a session.
  • Improved accuracy of startup moment timing by moving the start of the timer to earlier in the SDK startup process.
  • Fixed compatibility issues with AGP 4.1.x.
  • Added setting to allow disabling of automatic injection of SDK dependencies by the Gradle plugin. This is only needed for certain Unity build configurations.


February 18, 2021

  • Reverted relaxed AndroidX version requirements introduced in 4.6.6. since AndroidX 2.3.0+ caused issues.


February 10, 2021


This version has known issues and should not be used

  • Relaxed version requirements for AndroidX components


February 2, 2021

  • Improved SDK startup time.
  • Added Gradle task dependencies to support a single flavor anchoring tests for other variants.


January 22, 2021

  • Fixed issue that could cause session message to not be sent when the device had been in airplane mode and NDK crash support is enabled.


January 14, 2021

  • Fixed device ID generation to allow it to be used in automated tests.


January 12, 2021

  • Added configuration setting to disable capture of native network requests.


January 11, 2021

  • Added support for configuration files for product flavors.
  • Fixed bug that could cause a crash when network request size capture was enabled for native requests.


December 14, 2020

  • Added support for Unity applications.
  • Added debug logging mode.


October 21, 2020

  • Fixed dependency resolution issues with AGP 4.1.0+.


October 1, 2020

  • Fixed capture of ANR stacktraces for Android 7 and earlier.
  • Fixed Gradle plugin compatibility with AGP 4.1.0-rc1.


September 17, 2020

  • Added options to disable capture of web views and web view query parameters.
  • Truncate ANR stack traces to 100 lines.


September 9, 2020

  • Fixed issue with setting user identity on clean installs (introduced in 4.5.2)


Use 4.5.3 since it contains a bugfix for a critical bug introduced in this release

September 2, 2020

  • Capture additional metrics
  • Capture user info for NDK crashes
  • Enable ANR stacktrace capture by default for all users
  • Fixed issue with ANR stacktrace capture that could attribute an ANR to the session after it occurred
  • Fixed issue with Proguard/R8 upload that could prevent upload of mapping files for flavors


August 10, 2020

  • Added build option to disable swazzling of specific classes and/or jars
  • Improved performance of serializing sessions with large numbers of recorded network calls


July 24, 2020

  • Added configuration to disable swazzling for specific build types
  • Fixed bug introduced in 4.4.1 that prevented upload of Proguard files


July 14, 2020

  • Fixed bug where cached sessions were not sent if NDK crash support was not enabled
  • Fixed bug where only the first 3 ANR intervals were captured


July 2, 2020

  • Added NDK crash reporting


June 18, 2020

  • Fixed a concurrency bug that could trigger when making network calls shortly after startup
  • Added nullability annotations to improve Kotlin integration experience


May 26, 2020

  • Fixed an issue with capturing network request and response sizes for gzipped native requests when the content type header was lowercase.


May 15, 2020

  • Added option to disable capture of app disk usage. This could be excessively slow on older devices with large numbers of files in the app directory.
  • Disabled capturing network request and response sizes for native requests by default.


April 27, 2020

  • Migrated to AndroidX
  • Fixed issue with Proguard/R8 uploads with AGP 3.6.x
  • Added flavor-based SDK configuration option
  • Added check for transitive network library (okhttp and Volley) dependencies
  • Added configuration options to force inclusion of transitive network dependencies


April 15, 2020

  • New config property sessions.disabled_url_patterns filters network requests entirely from session
  • Added more logging around which embrace-config.json file is used and which paths were scanned


April 8, 2020

  • Added option to send session end message asynchronously
  • Only check the app's disk usage once during a session. This operation could take too long on certain devices for apps with large numbers of files to be done repeatedly
  • Fixed bug with reporting of network switches when the device had no connectivity


March 31, 2020

  • Fixed bug where temporary session properties would only be cleared on cold start. Now they are cleared at the end of each session
  • Show all custom configuration settings in the console log at startup
  • Fixed a bug that could prevent network, view, and tap captures from working when multiple variants were built with a single Gradle command
  • Fixed a bug where incorrect warning logs about deprecated settings could be shown


March 12, 2020

  • Fixed issue that prevented removal of session properties


March 11, 2020

  • Added ability to add properties to sessions
  • Capture additional thread info at the time of a crash
  • Fixed bug that caused clearAllUserPersonas to not clear all user personas
  • Fixed network capture issue that was causing network calls with IP addresses to be dropped


March 3, 2020

  • Added support to capture fragments manually
  • Removed incorrect build-time logs that referenced the usage of deprecated features
  • Added validations to handle usage of API-level-restricted functions


January 16, 2020

  • Fixed bug in Embrace Gradle plugin that could lead to SDK config not being properly read when building an app bundle


January 14, 2020

  • Added a more flexible configuration approach that simplifies how custom configurations can be set up for different build variants
  • Added user info association that is set during a session even if it was cleared before the session ended
  • Added optional argument to endSession method to clear user info when ending the session
  • Added ability to ignore non-serializable log and event properties
  • Fixed crash caused by trying to capture null headers from network requests.
  • Fixed a network path override issue when network requests ended in connection errors.
  • Improved sourcemap upload task for React Native


November 7, 2019

  • Added a config setting to allow disabling of gunzipping of requests made with the native Android network request framework. By default the SDK handles the gunzipping to allow response size to be computed, but this can interfere with certain services.


October 22, 2019

  • Improves capture of React Native crashes.


October 21, 2019

  • Added option to disable capture of tap coordinates.
  • Added support for React Native crashes.
  • Added support for improved React Native log stack traces.
  • Added support for upload of React Native source maps to the upload script.
  • Fixed bug that could cause failure in reading the swazzling cache.


September 8, 2019

  • Fixed issue that prevented uploading of mapping info when using r8


September 13, 2019

  • Added option to allow startup screenshots to be disabled


September 10, 2019

  • Removed network requests made when setting user info
  • Fixed bug that could cause an exception when using other SDKs that monitor network traffic
  • Fixed bug that prevented connection error types from being correctly reported


August 12, 2019

  • Handles attempt to set trace ID before SDK initialization
  • Re-added removed logNetworkCall and logNetworkClientError methods


August 9, 2019

  • We added support for passing a Throwable to logError. If you pass a Throwable, the stack trace from the Throwable will be used instead of the stack trace from where the logError method was called.
  • Log messages are now limited to 128 characters. Contact us if you need longer log messages.
  • We moved more of the work done for logInfo/Warning/Error calls to a worker thread to prevent the logging calls from blocking the threads they are called from.
  • We set the timestamp for log messages immediately after the log method is called rather than in a worker thread. This should slightly improve the accuracy of the log timestamps.
  • We reduced aggressiveness of config network requests. If you were offline and the SDK had never received a config, it would keep trying to get one more often than it should have.
  • We added a method to get the Embrace-assigned device ID from the SDK.
  • We now allow trace IDs to be captured from network requests and sent to Embrace.
  • Gracefully handle multiple attempts to start the SDK
  • Switched from using api to implementation for dependencies
  • Added missing public event-related methods to match the iOS SDK


July 22, 2019

  • Fixed typos in methods to set bytes in and out for manually-captured requests


July 22, 2019

  • Added support for manual capture of network requests. The SDK is capable of automatically capturing the majority of REST network calls made by applications, but this new method allows recording of network requests that are not automatically captured, such as gRPC requests.