Skip to content

add missing funcs - #4

Merged
sbokatuk merged 4 commits into
mainfrom
v3-improvements
Jul 23, 2026
Merged

add missing funcs#4
sbokatuk merged 4 commits into
mainfrom
v3-improvements

Conversation

@sbokatuk

Copy link
Copy Markdown
Owner

No description provided.

sbokatuk and others added 2 commits July 23, 2026 14:35
The emulator suite enabled Trace and stopped there: EnablesTrace registered a
tracer and never started a span, so the tracing path was configured and never
driven. That is the class of gap a trace-id defect slips through. Four checks
close it, taking the suite from 13 to 17:

- a span started, tagged, errored, logged and finished, with its ids asserted by
  shape rather than for non-emptiness: 32 lowercase hex characters and not all
  zeros for the trace, decimal for the span
- header injection cross-checked two ways - against traceparent across all 128
  bits, which is derived independently of GetTraceId, and against the low 64 bits
  the Datadog header carries in decimal - plus the delegate form, which must
  write the same count as the dictionary form
- the single-value attribute overloads on RUM, feature flags and a logger, with
  DatadogAttributes.ToJava asserted directly
- the session id through GetCurrentSessionIdAsync, asserted non-null; a null
  means the Kotlin callback never fired, which is what the Task wrapper exists
  to surface

The harness gained async support for the last of those.

The sample was still largely the MAUI project template. It now matches the iOS
sample: sections for RUM, Trace and Logs with an on-screen activity log, so it is
useful without a Datadog account to send to. It also carried a bug worth not
shipping in a sample - OnDisappearing disposed the view scope and then
immediately started a new view, leaving one open for the rest of the session,
collecting every action and error that followed.

17/17 on an arm64 emulator; 94/94 package tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The e2e ran against net10.0-android36.0 only. It is now a matrix over the two
extremes: net8, the oldest asset set and the one nothing else exercises, and
net10, whose assets come out of the merge step in BuildNugets.sh and so are the
only ones that could be grafted in wrong. net9 sits between them and comes out of
the same pack pass as net8.

Standing net8 up found three problems, none of which anything else would have
caught:

- the SDK band has to be chosen by Android API level, not .NET version. The .NET
  9 band has API 34 reference packs but no API 34 runtime packs, so a net8 app
  compiles and then fails to package with NETSDK1112
- NU1107 on Xamarin.AndroidX.SavedState: Navigation.Common wants >= 1.4.0 while
  SavedState.Ktx pins [1.3.2, 1.3.3). The .NET 9 and 10 SDKs resolve the higher
  version and warn; the .NET 8 SDK refuses. Pinned to 1.4.0 on the net8 head
  *only* - pinning it everywhere is a downgrade on net10, where Fragment wants
  >= 1.5.0.1, and fails the other way with NU1605. Every net8 consumer of these
  packages needs this pin
- XA1018: the .NET 9 and 10 Android SDKs generate an AndroidManifest.xml; the
  .NET 8 one defaults $(AndroidManifest) to the project root and fails because
  nothing is there

SessionReplayCompose is excluded from the net8 leg, because it genuinely has no
net8 asset - its last net8 build pins an AndroidX SavedState old enough to
collide with the rest of the graph. DATADOG_HAS_COMPOSE keeps the module check
from looking for a class that build does not ship, so it still fails for the
right reasons rather than being quietly weakened.

17/17 on both legs, verified on an arm64 emulator.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sbokatuk
sbokatuk merged commit ae00e9a into main Jul 23, 2026
6 checks passed
@sbokatuk
sbokatuk deleted the v3-improvements branch July 23, 2026 12:16
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.

1 participant