Releases: embrace-io/embrace-android-sdk
Releases · embrace-io/embrace-android-sdk
6.7.0
6.6.0
THE OpenTelemetry Release!
- We migrated the internals of the Embrace Android SDK to use the OpenTelemetry Java SDK at its core.
- This means the bulk of the telemetry are 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!
- As a result of this upgrade, 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
6.5.0
- Fully support configuration cache on all Gradle versions.
- Fix issue with active Moments being lost when a new session starts.
6.4.0
- 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
6.3.2
- 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
6.3.1
- Full support for Gradle 8.4+
- Plus all the performance enhancements of 6.3.0!
6.3.0
- 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
6.2.0
What's Changed
Features
- Update readme by @bidetofevil in #23
- Add getSdkCurrentTime to internal interface by @bidetofevil in #8
- Use new sdk time direcctly and indirectly for timetamps sent in SDK by @bidetofevil in #9
- [EMBR-631] Unify in ApiService all interaction with ApiClient. by @lucaslabari in #19
- Move clocks to internal package by @bidetofevil in #28
- Capture build id for NDK stackframes by @fractalwrench in #16
- Enhance information available for debugging NDK stack unwinds by @fractalwrench in #17
- EMB-14180 - Fixed link to very old docs.embrace.io URL. by @vitaliyf in #30
- Log how many times a signal handler was invoked by @fractalwrench in #31
- Fix breadcrumb flushing for background activities by @bidetofevil in #27
- Cleanup URLConnection wrappering code by @bidetofevil in #29
- Refactor OkHttp interceptors and turn them into Kotlin by @bidetofevil in #32
- Only rebuild response in OkHttp interceptor if we modify the body by @bidetofevil in #33
- Improve offset calcuation and application when normalizing to SDK clock by @bidetofevil in #34
- Alter the AppExitInfoService to encode NDK protobuf info in escaped chars by @fractalwrench in #22
- Add tests for URLConnection wrappers by @bidetofevil in #35
- added recordnetwork methods with primitive data types by @nelsitoPuglisi in #37
- Move internal annotations to the annotations package by @bidetofevil in #39
- Make tracing interface internal by @bidetofevil in #40
- Change dokka task to remove needless suppression by @bidetofevil in #41
- [EMBR-631] Make ApiUrlBuilder independent from ConfigService. by @lucaslabari in #10
- Create CONTRIBUTING.md by @nelsitoPuglisi in #38
- Remove public internal things from public docs generated by Dokka by @bidetofevil in #42
- Update License by @nelsitoPuglisi in #44
- Update ci-gradle.yml runner to ubuntu-latest by @nelsitoPuglisi in #47
- publishing dokka before setting next snapshot by @nelsitoPuglisi in #26
- Update Copyright in LICENSE.txt by @nelsitoPuglisi in #45
- Update session span start time per new clock by @bidetofevil in #48
- Turn on Spans by default by @bidetofevil in #43
- Only log startup moment span if it's not triggered by a lateness timer by @bidetofevil in #46
- Move Delivery Retry logic outside EmbraceApiService. by @lucaslabari in #49
- Additional EmbraceUrlConnectionDelegate unit tests and bug fixes by @bidetofevil in #50
- Add myself as a codeowner for the some files in the repo by @bidetofevil in #54
- Extract component callbacks from activity service by @fractalwrench in #52
- [EMBR-1230] Make rawPost private in ApiClient by @lucaslabari in #53
- Create property delegate function for ThreadLocal by @fractalwrench in #58
- Alter how periodic session caching works by @fractalwrench in #51
- Write session to disk synchronously during crash by @fractalwrench in #57
- Cleanup ApiClient and add more tests by @bidetofevil in #59
- Add more tests to EmbraceApiService by @bidetofevil in #60
- Extract logic for constructing ApiRequest from ApiService by @fractalwrench in #61
- Allow session retries to continue by @fractalwrench in #62
- Avoid ending session on background thread by @fractalwrench in #55
- Stop setting KVM group permissions on CI job by @fractalwrench in #66
- Perform session gating asynchronously by @fractalwrench in #67
- Add tests for EmbraceUrl by @bidetofevil in #65
- Compare payloads in EmbraceApiServiceTest by @bidetofevil in #64
- Separate lifecycle callbacks for activity + process state by @fractalwrench in #69
- Document crash sending strategy by @fractalwrench in #70
- Extract session message collator by @fractalwrench in #71
- Extract session properties into separate service by @fractalwrench in #72
- Convert ApiResponse into a seal class. by @lucaslabari in #63
- Rollback behavior for 4xx and 5xx status code. by @lucaslabari in #82
- Use remote limit as ceiling for network call limits and apply consistently by @bidetofevil in #78
- Get rid of unnecessary @VisibleForTest annotations by @bidetofevil in #84
- Extract session ordinal logic to preference service by @fractalwrench in #81
- Reduce duplication in session ending logic by @fractalwrench in #74
- Move session enum and session properties by @fractalwrench in #80
- Use the over-the-wire response size when logging URLConnection network calls by @bidetofevil in #85
- Simplify CountingInputstreamWithCallback and remove unnecessary constructs by @bidetofevil in #86
- Add ordinal number to track background activity requests by @fractalwrench in #87
- Remove unused method from DeliveryService. by @lucaslabari in #90
- Add tests for state transition by @fractalwrench in #88
- Remove process listening from user service by @fractalwrench in #89
- Enforce call order for session/background activity state transition by @fractalwrench in #83
- Move sdk startup duration to session handler by @fractalwrench in #91
- Move active session down to SessionHandler by @fractalwrench in #94
- Move periodic caching to SessionHandler by @fractalwrench in #95
- Add app atttributes to the first session span by @bidetofevil in #92
- Remove unnecessary internal debugging traces by @bidetofevil in #93
- New workflow to update baseline profile file by @nelsitoPuglisi in #77
- Update CONTRIBUTING.md by @nelsitoPuglisi in #103
- Improve systrace shim to only use async sections by @bidetofevil in #98
- Fix AAR metadata to point to new minCompileSdk requirement by @bidetofevil in #97
- Synchronize network call logging by @bidetofevil in #99
- Change the name of the method to get all the outstanding network calls by @bidetofevil in #100
- Detect unbalanced process lifecycle calls by @fractalwrench in https://github.com/embrace-io/embrace-and...
6.1.0
- Enabled Performace 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 breadrumbs on background activities
6.0.0
CI/CD: change version to be released: 6.0.0