3.12.1.1
What's changed
First release. Thirteen packages binding dd-sdk-android 3.12.1
for .NET for Android and .NET MAUI.
What you get
RUM, Logs, Trace, Session Replay (with the Material and Compose extensions), NDK crash reporting,
WebView tracking and the OkHttp integration — every documented Datadog Android feature, reachable
from C#.
dotnet add package DatadogNet.RUM.Android
Start with DatadogNet.RUM.Android; it pulls in Core and Internal. Add the features you actually
enable. There is no façade package, because dd-sdk-android has no DatadogObjc equivalent and
inventing one would make every app pay for Session Replay and NDK crash reporting to use RUM.
Version numbering
3.12.1.1 is dd-sdk-android 3.12.1, binding revision 1. The fourth component belongs to
this repository and advances when the bindings or packaging change while the native artifacts stay
put.
Things worth knowing before you start
AndroidTracer no longer exists. dd-sdk-android 3.0 removed it together with the OpenTracing
dependency. Use DatadogTracing.NewTracerBuilder(Datadog.Instance).Build() and register it with
GlobalDatadogTracer.RegisterIfAbsent.
TrackUserInteractions(), not TrackInteractions(). Datadog's own documentation still shows
the latter for Android; it is not in the 3.x binary API.
Trace collides with Android.OS.Trace. Alias it:
using DdTrace = Com.Datadog.Android.Trace.Trace;.
Kotlin's default parameter values do not survive into C#. Where upstream marked a member
@JvmOverloads you get the arity ladder; where it did not, pass every argument.
Configuration.Builder is the one you will notice — pass variant and service explicitly.
Some object members are static and some are not. SessionReplay.Enable is static but
StartRecording/StopRecording are SessionReplay.Instance.StartRecording(...); the same applies
to GlobalDatadogTracer.Clear. That asymmetry is upstream's.
MAUI reports one RUM view for the whole app unless you report views yourself, because every
page renders into a single Activity. GlobalRumMonitor.Get().StartView("key", "Name") returns a
scope you can wrap in a using.
Convenience API
Each package adds a small hand-written layer over the generated binding: IDisposable view scopes,
Dictionary<string, object?> attributes instead of hand-wrapped Java.Lang.Objects, and Exception
overloads that fold the managed type, message and stack into error.kind, error.message and
error.stack. Nothing is hidden or renamed — the generated members are all still there.
What is not bound
The Session Replay wireframe mappers, dd-sdk-android-trace-internal's whole surface, and a
handful of internal types. All of them still ship in the .aar and still run; what you lose is
authoring a custom wireframe mapper in C#. Every omission is explained next to the rule that makes
it, in the relevant Transforms/Metadata.xml.
Target frameworks
All thirteen packages target net8.0-android34.0, net9.0-android35.0 and net10.0-android36.0,
except DatadogNet.SessionReplayCompose.Android, which is net9/net10 only — Compose's last net8
build pins an AndroidX SavedState old enough to collide with what a MAUI app resolves.
Build your app with MAUI 10. MAUI 9 cannot build against the AndroidX generation these packages
depend on: a plain MAUI 9 app with nothing but Xamarin.AndroidX.AppCompat 1.7.1.1 added fails
generating Java callable wrappers with a NullReferenceException inside the .NET Android SDK, with no
Datadog package present. That is an SDK defect, and MAUI 10 is unaffected.
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.1are 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.1 |
DatadogNet.Core.Android |
dd-sdk-android-core |
3.12.1.1 |
DatadogNet.Logs.Android |
dd-sdk-android-logs |
3.12.1.1 |
DatadogNet.TraceApi.Android |
dd-sdk-android-trace-api |
3.12.1.1 |
DatadogNet.TraceInternal.Android |
dd-sdk-android-trace-internal |
3.12.1.1 |
DatadogNet.Trace.Android |
dd-sdk-android-trace |
3.12.1.1 |
DatadogNet.RUM.Android |
dd-sdk-android-rum |
3.12.1.1 |
DatadogNet.SessionReplay.Android |
dd-sdk-android-session-replay |
3.12.1.1 |
DatadogNet.SessionReplayMaterial.Android |
dd-sdk-android-session-replay-material |
3.12.1.1 |
DatadogNet.SessionReplayCompose.Android |
dd-sdk-android-session-replay-compose |
3.12.1.1 |
DatadogNet.Ndk.Android |
dd-sdk-android-ndk |
3.12.1.1 |
DatadogNet.WebView.Android |
dd-sdk-android-webview |
3.12.1.1 |
DatadogNet.OkHttp.Android |
dd-sdk-android-okhttp |
3.12.1.1 |
dotnet add package DatadogNet.RUM.Android --version 3.12.1.1
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/.