Skip to content

3.12.1.4

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Jul 19:53
6059887

What's changed

Binding-only release. The native SDK is unchanged — still
dd-sdk-android 3.12.1 — and so
are the package ids, namespaces and API. The fourth component advances for the changes below:
what 3.12.1.3 started for two packages, this release finishes for all thirteen.

Complete R8 keep-rules, in every package

3.12.1.3 shipped consumer keep-rules for WebView and Ndk. That covered two of the thirteen
JNI-only entry surfaces — and none of upstream's own rules, because .NET for Android never feeds
an .aar's embedded proguard.txt to R8 the way Gradle would. Every package now ships a
generated buildTransitive/<PackageId>.pro with both halves:

  • upstream's consumer rules, recovered verbatim from the .aar — the
    -keepattributes SourceFile,LineNumberTable that Error Tracking needs, the Session Replay
    recorder's -keepnames, and the rest that was silently dropped before;
  • curated keeps for the JNI-only entry surface: Datadog, Rum/GlobalRumMonitor and the
    RumMonitor interface, Logs and Logger, Trace/DatadogTracing/GlobalDatadogTracer
    and the tracer/span/scope/propagation interfaces, SessionReplay, every *Configuration and
    its Builder, the enums whose constants C# reads, the OkHttp interceptors, and each module's
    equivalents. All of it is reached from C# through JNI alone, which a Java shrinker cannot see.

If you enable Java shrinking (AndroidLinkTool=r8) you no longer need hand-written -keep
rules for Datadog classes, and workarounds can be deleted. The rules are generated by
build/generate-r8-rules.sh from the pinned .aars, CI fails on drift, and one emulator leg
now runs the smoke suite against a genuinely shrunk build — so a keep-rule regression fails CI
functionally instead of surfacing as a ClassNotFoundException in your Release build.

IntelliSense from upstream's KDoc

Every binding project now feeds upstream's -sources.jar to the binding generator
(@(JavaSourceJar)), which imports API documentation into the generated XML docs — on all three
target frameworks, downloaded and pinned like every other artifact. Expectations calibrated:
the importer parses Java sources and dd-sdk-android is Kotlin, so coverage is thin rather than
complete — but what it can extract now reaches your editor, and the hand-written convenience
layer remains fully documented.

The supply chain is PGP-verified

The SHA-256 pin list (now 30 pins, sources jars included) anchored what Maven Central served
on the day of pinning
. It now also anchors that Datadog signed it:
build/UpdateMavenChecksums.sh downloads each Datadog artifact's detached .asc and verifies
it against Datadog's release signing key, pinned by full fingerprint
(CAF18D4EC00CA4450C6725A59333D4EF32A49F0A). A bad signature is a hard failure; a machine
without gpg skips loudly. The build itself gained a completeness guard — a declared artifact
whose pin is missing fails the build by name instead of slipping past unverified — and CI
regenerates both the pins and the keep-rules on every run and fails on any diff.

Smaller improvements

  • New Troubleshooting entry for the NU1107 on Xamarin.AndroidX.SavedState that every
    net8 consumer hits: the direct 1.4.0 reference that settles it, and why it must not be
    applied to net9/net10.
  • The unbound-artifact roster is complete and watched: build/packages.tsv now accounts
    for all 41 dd-sdk-android* artifacts on Maven Central with a reason per exclusion —
    -flags, -flags-openfeature and -profiling are recorded as binding candidates — and a
    weekly upstream-watch workflow opens an issue when upstream releases a newer line or
    publishes an artifact the roster has never met.
  • Releases cannot lie about their native version: the release workflow refuses a tag whose
    native prefix disagrees with Directory.Build.props (a documented override exists for the
    deliberate case).
  • build/BumpNativeVersion.sh scripts the mechanical half of a native upgrade: props,
    checksum pins, keep-rules, dependency verification, README versions and a release-notes
    scaffold, in one command.

net8 sunset

Unchanged policy: the net8.0-android34.0 head is dropped, and the held-back dependency
versions unpinned, in the first release after .NET 8 leaves support on 10 November 2026.

Upgrading from 3.12.1.3

Nothing to change. A Release build with R8 enabled may keep more classes than before — that is
the point — and binaries are byte-for-byte the same native SDK.

Full changelog: v3.12.1.3...v3.12.1.4

Packages

Bound against dd-sdk-android 3.12.1, targeting net8.0-android34.0, net9.0-android35.0 and net10.0-android36.0.

The first three components of 3.12.1.4 are the dd-sdk-android version; the fourth is this
repository's binding revision, which advances when the bindings or packaging change while
the native binaries stay put.

Package Wraps NuGet
DatadogNet.Internal.Android dd-sdk-android-internal 3.12.1.4
DatadogNet.Core.Android dd-sdk-android-core 3.12.1.4
DatadogNet.Logs.Android dd-sdk-android-logs 3.12.1.4
DatadogNet.TraceApi.Android dd-sdk-android-trace-api 3.12.1.4
DatadogNet.TraceInternal.Android dd-sdk-android-trace-internal 3.12.1.4
DatadogNet.Trace.Android dd-sdk-android-trace 3.12.1.4
DatadogNet.RUM.Android dd-sdk-android-rum 3.12.1.4
DatadogNet.SessionReplay.Android dd-sdk-android-session-replay 3.12.1.4
DatadogNet.SessionReplayMaterial.Android dd-sdk-android-session-replay-material 3.12.1.4
DatadogNet.SessionReplayCompose.Android dd-sdk-android-session-replay-compose 3.12.1.4
DatadogNet.Ndk.Android dd-sdk-android-ndk 3.12.1.4
DatadogNet.WebView.Android dd-sdk-android-webview 3.12.1.4
DatadogNet.OkHttp.Android dd-sdk-android-okhttp 3.12.1.4
dotnet add package DatadogNet.RUM.Android --version 3.12.1.4

Licensing

The binding code is MIT; the bundled native binaries are Apache-2.0, as built and
published by Datadog. Each package ships both texts under licenses/.