feat(experimental): Android Client SDK FDv2 EAP#369
Draft
tanderson-ld wants to merge 4 commits into
Draft
Conversation
## Summary
- Adds `"fdv2": { "introduced": "5.13" }` to `.sdk_metadata.json` so
downstream sdk-meta tooling lists the Android Client SDK as
FDv2-capable.
- Inserted alphabetically between `experimentation` and `flagChanges`.
Mirrors the cross-SDK convention used by Python (#375 / metadata in
9.13), .NET (#221 / metadata in 8.11), Java (#120 / metadata in 7.11),
Go (#342), Node (#1066).
Tracking:
[SDK-2443](https://launchdarkly.atlassian.net/browse/SDK-2443).
## Test plan
- [x] JSON file parses (validated by the diff being a clean one-line
add).
- [ ] CI passes on this branch.
## Note on the version pin
The `introduced` version assumes the EAP ships as `5.13`. If the
umbrella branch advances past that minor before EAP cut, update this
value to match the actual release version before merging
`sdk-2429-android-fdv2-eap`.
[SDK-2443]:
https://launchdarkly.atlassian.net/browse/SDK-2443?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Metadata-only JSON change with no effect on SDK runtime behavior.
>
> **Overview**
> Registers **FDv2** as a supported Android Client SDK feature in
`.sdk_metadata.json`, with `"introduced": "5.13"`, so sdk-meta and
related tooling can treat this SDK as FDv2-capable (aligned with other
LaunchDarkly client SDKs).
>
> The new entry is placed alphabetically in the `features` map between
`experimentation` and `flagChanges`. No runtime or SDK code changes in
this PR.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
e1dd7d1. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…#367) ## Summary - Uncomments the v3 contract-test invocation in the Makefile and pins it to sdk-test-harness `v3.1.0-alpha.6` — the first published alpha that includes [sdk-test-harness PR #325](launchdarkly/sdk-test-harness#325) ("updates so FDv2 tests can run against client side sdks"). - Moves the `-stop-service-at-end` flag from the v2 invocation to the v3 invocation (v3 is now the final harness run). - Deletes the obsolete "Uncomment this..." instruction block. Targets the `sdk-2429-android-fdv2-eap` umbrella branch. Tracking: [SDK-2442](https://launchdarkly.atlassian.net/browse/SDK-2442). ## Test plan - [x] `make build-contract-tests` succeeds. - [x] `make start-contract-test-service` installs and starts the APK on the emulator. - [x] `make run-contract-tests` runs both harnesses cleanly: - v2 (FDv1): 798 total, 14 skipped, 784 ran — all passed. - v3 (FDv2, `v3.1.0-alpha.6`): 784 total, 21 skipped, 763 ran — all passed. - [x] Test service stops cleanly after v3 completes. - [ ] CI passes on this branch. [SDK-2442]: https://launchdarkly.atlassian.net/browse/SDK-2442?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Makefile-only CI/contract-test wiring with no production SDK or runtime behavior changes. > > **Overview** > **`make run-contract-tests` now runs both harnesses in sequence:** v2 (FDv1) unchanged except **`-stop-service-at-end` is removed**, then a new **v3** step pinned to **`sdk-test-harness/v3.1.0-alpha.6`** with **`SUPPRESSION_FILE_FDV2`**, **`TEST_HARNESS_PARAMS_V3`**, and **`-stop-service-at-end`** so the contract test service stops after the final run. > > The old commented-out v3 block and “uncomment when ready” note are deleted; the Makefile comment still documents that only the last harness should pass **`-stop-service-at-end`**. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 54f04b5. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
#361) - Make Components.dataSystem() and LDConfig.Builder.dataSystem() public again so customer code can opt in to FDv2 for the EAP. PR #351 had hidden these while the surface was being finalized. - Add package-private no-arg constructors to InitializerEntry and SynchronizerEntry so external code cannot subclass them; the SDK's concrete entry types in the same package continue to compile. - Remove InternalDataSystemAccess (a pure pass-through wrapper) and switch contract-tests SdkClientEntity to call the now-public Components.dataSystem() / LDConfig.Builder.dataSystem() directly. SDK-2438 <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Expands the public API for an unstable EAP data path (FDv2 vs legacy dataSource), but runtime wiring is unchanged aside from visibility and contract-test call sites. > > **Overview** > Re-opens the **early-access FDv2 data system** configuration surface for customer opt-in by making **`Components.dataSystem()`** and **`LDConfig.Builder.dataSystem()`** **public** again (reversing the package-private hiding from PR #351). > > **`InternalDataSystemAccess`** is **removed** as a pass-through; contract-tests now call the public **`Components.dataSystem()`** / **`builder.dataSystem(...)`** APIs directly. > > **`InitializerEntry`** and **`SynchronizerEntry`** gain **package-private no-arg constructors** so code outside the SDK cannot subclass those abstract bases; in-package concrete entry types (e.g. polling/streaming entries) are unchanged. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 24eb4c0. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Umbrella PR for the Android Client SDK FDv2 Early Access Program release. Tracks SDK-2429.
What lands when this PR merges
Three sub-task PRs are already on the umbrella branch and would land together:
Components.dataSystem()andLDConfig.Builder.dataSystem(...), lock theInitializerEntry/SynchronizerEntryabstract bases against external subclassing, remove the now-redundantInternalDataSystemAccesstest helper.v3.1.0-alpha.6alongside v2."fdv2": { "introduced": "5.13" }to.sdk_metadata.json.Additional commits expected before merge (one per pending code sub-task above).
Pre-merge checklist
main(umbrella branch is currently behindmainby 5.12.2 release + a few fixes).introducedversion in.sdk_metadata.jsonmatches the actual EAP minor at release time.fdv2-eap-release-notes.mdplaceholders (or hand-paste content into the release-please-generated notes) at cut time.launchdarkly/ld-docs-privateand ready to merge alongside this release.hello-androidPR (SDK-2445) is open and ready to merge alongside.