Skip to content

feat: o3 level optimization for image diffing#443

Merged
abelonogov-ld merged 17 commits intomainfrom
andrey/use-binary-c
Mar 27, 2026
Merged

feat: o3 level optimization for image diffing#443
abelonogov-ld merged 17 commits intomainfrom
andrey/use-binary-c

Conversation

@abelonogov-ld
Copy link
Copy Markdown
Contributor

@abelonogov-ld abelonogov-ld commented Mar 27, 2026

Summary

Replace the CMake-compiled C native library with prebuilt .so binaries in the Android SDK, pin additional AndroidX Lifecycle dependencies in the MAUI NuGet packages, and bump the MAUI SDK version to 0.5.2.

Changes

Android SDK (observability-android)

  • Switch from CMake source compilation to prebuilt .so binaries: Removed all C source files (tile_hash.c, tile_hash.h, tile_hash_jni.c, nearest_divisor.c, nearest_divisor.h) and the externalNativeBuild { cmake { ... } } block from build.gradle.kts. Added prebuilt libsession_replay_c.so binaries under jniLibs/ for all four ABIs: arm64-v8a, armeabi-v7a, x86, x86_64. This eliminates the CMake/NDK build dependency and ensures consistent binary output across environments.
  • Rename native library: Updated TileHashNative.kt to load session_replay_c instead of the old tile_hash library name.

MAUI / .NET SDK (mobile-dotnet)

  • Pin additional AndroidX Lifecycle dependencies: Added Xamarin.AndroidX.Lifecycle.LiveData and Xamarin.AndroidX.Lifecycle.ViewModelSavedState at [2.9.2.1, 3.0.0) in both LDObservability.csproj and LDObservability.Fat.csproj to prevent NU1608 version-mismatch warnings in consumer projects.
  • Version bump to 0.5.2 in Directory.Build.props.

Test Plan

  • Build Android SDK — verify it compiles without CMake/NDK and the prebuilt .so files are bundled correctly in the AAR
  • Run Android SDK on all ABIs (arm64-v8a, armeabi-v7a, x86, x86_64) — verify TileHashNative loads libsession_replay_c.so successfully
  • Build MAUI SDK — verify no NU1608 dependency warnings
  • Run session replay on Android via MAUI — verify tile hashing works end-to-end

Note

Medium Risk
Switches Android session-replay hashing from source-built JNI (CMake/NDK) to bundled prebuilt .so binaries and renames the loaded library, which can impact runtime loading/ABI compatibility. Additional AndroidX pinning and a package version bump are low risk but may affect downstream dependency resolution.

Overview
Moves Android session replay tile-hashing from a CMake/NDK-built JNI library to prebuilt native binaries: removes the CMake build configuration and deletes the C sources/JNI glue, relies on packaged libsession_replay_c.so under jniLibs/ for all ABIs, and updates TileHashNative to load session_replay_c.

Updates the .NET MAUI NuGet packaging by bumping LaunchDarkly.SessionReplay to 0.5.2 and pinning additional AndroidX Lifecycle dependencies (LiveData, ViewModelSavedState, and aligned LiveData.Core) to reduce consumer version-conflict warnings.

Written by Cursor Bugbot for commit b5239b4. This will update automatically on new commits. Configure here.

@abelonogov-ld abelonogov-ld requested a review from a team as a code owner March 27, 2026 18:53
* main:
  fix: Build warnings and compatibility issues across Android and MAUI (.NET) SDKs. (#439)
  feat(observability-ruby): publish Ruby observability plugin gem (#413)
  ci: fix oidc publishing (#441)
  ci: switch to OIDC npm publishing (#438)

# Conflicts:
#	sdk/@launchdarkly/observability-android/lib/src/main/cpp/CMakeLists.txt
…to 2.9.2.1 to align with other lifecycle components
Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

@abelonogov-ld abelonogov-ld merged commit 9045142 into main Mar 27, 2026
24 checks passed
@abelonogov-ld abelonogov-ld deleted the andrey/use-binary-c branch March 27, 2026 20:59
abelonogov-ld pushed a commit that referenced this pull request Mar 27, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>launchdarkly-observability-android: 0.34.0</summary>

##
[0.34.0](launchdarkly-observability-android-0.33.0...launchdarkly-observability-android-0.34.0)
(2026-03-27)


### Features

* o3 level optimization for image diffing
([#443](#443))
([9045142](9045142))


### Bug Fixes

* Build warnings and compatibility issues across Android and MAUI (.NET)
SDKs.
([#439](#439))
([47c4640](47c4640))
</details>

<details><summary>launchdarkly-observability-ruby: 0.2.0</summary>

##
[0.2.0](launchdarkly-observability-ruby-0.1.0...launchdarkly-observability-ruby/0.2.0)
(2026-03-27)


### Features

* **@launchdarkly/session-replay-react-native:** use cocoapods for
native session replay
([#434](#434))
([41988e1](41988e1))
* **observability-ruby:** publish Ruby observability plugin gem
([#413](#413))
([569a7b4](569a7b4))
* ruby observability plugin
([#360](#360))
([79dc8dd](79dc8dd))


### Bug Fixes

* structured stacktrace capture in Ruby observability plugin
([#427](#427))
([1dae61e](1dae61e))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk release-metadata update (version numbers, changelogs, and
provenance docs) with no functional code changes in this diff.
> 
> **Overview**
> Updates release metadata to cut new SDK versions:
`@launchdarkly/observability-android` from `0.33.0` to `0.34.0` and
`@launchdarkly/observability-ruby` from `0.1.0` to `0.2.0` (including
manifest/version files).
> 
> Adds the corresponding `CHANGELOG.md` entries and bumps the Ruby
`PROVENANCE.md` example version to match the new release.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
4488f03. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants