Skip to content

feat(rokt-sdk-plus): add com.rokt:rokt-sdk-plus umbrella artifact#721

Open
thomson-t wants to merge 1 commit into
workstation/6.0-Releasefrom
thomson-t/rokt-sdk-plus-android
Open

feat(rokt-sdk-plus): add com.rokt:rokt-sdk-plus umbrella artifact#721
thomson-t wants to merge 1 commit into
workstation/6.0-Releasefrom
thomson-t/rokt-sdk-plus-android

Conversation

@thomson-t

Copy link
Copy Markdown
Collaborator

Background

iOS ships a single umbrella pod/SPM package, RoktSDKPlus, that bundles the mParticle core SDK, the mParticle Rokt kit, and the Rokt Payment Extension. This PR adds the Android equivalent so partners adopting Rokt Shoppable Ads can depend on one artifact instead of wiring up core + kit + payment extension by hand, with versions guaranteed to be compatible.

The mParticle Rokt kit deliberately does not pull com.rokt:payment-extension (or Stripe) transitively (see #713) — apps that don't need Shoppable Ads stay lightweight. rokt-sdk-plus is the artifact that adds it on top.

What changed

  • New rokt-sdk-plus/ module — a thin com.android.library (empty AAR) that api-aggregates android-core, android-rokt-kit, and com.rokt:payment-extension, plus a RoktSdkPlus.VERSION constant. It is an aggregator, not a kit, so it applies the publish convention plugin directly (not com.mparticle.kit).
  • Published as com.rokt:rokt-sdk-plus via an isolated settings-rokt-sdk-plus.gradle, so it builds/publishes in its own Gradle invocation with the Rokt Maven Central credentials (separate from the com.mparticle secrets).
  • Centralized Rokt versions in root gradle.properties (roktSdkVersion, roktPaymentExtensionVersion); the Rokt kit now reads roktSdkVersion instead of hardcoding it.
  • Publish convention plugin gains optional POM url/license overrides (backward-compatible) so the com.rokt artifact carries Rokt branding.
  • release-publish.yml — publish the Rokt kit to mavenLocal so the umbrella resolves its mParticle deps locally (avoiding a Maven Central propagation race), then publish the umbrella to Central with the Rokt credentials.

Versioning

The umbrella version tracks the mParticle SDK release line (shared with android-core / android-rokt-kit). The bundled Rokt artifacts (roktsdk / payment-extension) ride their own Rokt line, pinned via the shared gradle.properties properties.

Resulting dependency closure (verified locally)

com.rokt:rokt-sdk-plus
├── com.mparticle:android-core
├── com.mparticle:android-rokt-kit → android-kit-base → android-core, + com.rokt:roktsdk → roktux
└── com.rokt:payment-extension → roktsdk, com.stripe:stripe-android, play-services-wallet

Validation

  • :rokt-sdk-plus:publishMavenPublicationToMavenLocal succeeds; POM validation passes; coordinates com.rokt:rokt-sdk-plus (packaging aar), Rokt license/URL, three api deps with the two version lines correct; sources jar + stub javadoc jar + Gradle module metadata produced.
  • A throwaway consumer depending only on com.rokt:rokt-sdk-plus resolves the full closure above with no failures.
  • Rokt kit still resolves roktsdk via the new property.

⚠️ Required before this can release

  1. com.rokt:payment-extension is not yet on Maven Central (zero versions published). The publish step will fail until the ROKT team publishes payment-extension (and a matching roktsdk) to Central. Verified locally against a mavenLocal build of the payment extension.
  2. Add the ROKT_* repo secrets (ROKT_MAVEN_CENTRAL_SIGNING_KEY, ROKT_MAVEN_CENTRAL_SIGNING_KEY_PASSWORD, ROKT_SONATYPE_NEXUS_USERNAME, ROKT_SONATYPE_NEXUS_PASSWORD) with verified com.rokt Central Portal namespace access.
  3. Coordinate with feat: add Rokt Shoppable Ads support #713 — it adds the kit-side registerPaymentExtension/selectShoppableAds facade referenced in the README and bumps the roktsdk line; expect a one-line merge conflict in kits/rokt/rokt/build.gradle (resolve by keeping the property and bumping gradle.properties).

Note: rokt-sdk-plus is intentionally kept out of the default CI build (pull-request.yml / main settings) because the missing payment-extension on Central would otherwise break CI. It builds only via -c settings-rokt-sdk-plus.gradle.

Notes

  • The umbrella ships a single Java metadata class (not Kotlin) to avoid a stdlib-metadata version mismatch — the bundled Rokt artifacts are built with Kotlin 2.2, newer than this repo's compiler. Consumers still receive kotlin-stdlib transitively.
  • Version defaults are 6.0.1-rc.1 (the latest roktsdk on Central; rc.2 does not exist).

🤖 Generated with Claude Code

Introduce a single Android dependency that bundles the mParticle core SDK, the
mParticle Rokt kit, and the Rokt Payment Extension (Shoppable Ads), mirroring the
iOS RoktSDKPlus umbrella. Partners adopting Shoppable Ads can depend on one
artifact instead of wiring up core + kit + payment extension by hand.

- New rokt-sdk-plus module: thin com.android.library (empty AAR) that api-aggregates
  android-core, android-rokt-kit, and com.rokt:payment-extension, plus a RoktSdkPlus
  version constant. The mParticle Rokt kit deliberately omits the payment extension;
  this umbrella is what adds it on top.
- Published as com.rokt:rokt-sdk-plus via an isolated settings-rokt-sdk-plus.gradle so
  it builds/publishes in its own Gradle invocation with Rokt Maven Central credentials.
- Centralize the Rokt SDK / payment extension versions in gradle.properties
  (roktSdkVersion, roktPaymentExtensionVersion); the Rokt kit now reads roktSdkVersion.
- Extend the publish convention plugin with optional POM url/license overrides
  (backward-compatible) so the com.rokt artifact carries Rokt branding.
- release-publish.yml: publish the Rokt kit to mavenLocal so the umbrella resolves its
  mParticle deps locally (avoiding Maven Central propagation races), then publish the
  umbrella to Central with the Rokt credentials.

The umbrella version tracks the mParticle SDK line; the bundled Rokt artifacts ride
their own line.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@thomson-t thomson-t requested a review from a team as a code owner June 17, 2026 21:18
@cursor

cursor Bot commented Jun 17, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Release pipeline now depends on Rokt-specific secrets, mavenLocal ordering, and com.rokt:payment-extension being available on Maven Central; core SDK behavior is unchanged but a failed umbrella publish could block or complicate releases until prerequisites are met.

Overview
Adds com.rokt:rokt-sdk-plus, an Android umbrella dependency (like iOS RoktSDKPlus) that api-aggregates android-core, android-rokt-kit, and com.rokt:payment-extension so Shoppable Ads partners can depend on one coordinate instead of wiring core, kit, and payment extension separately.

The module is built via isolated settings-rokt-sdk-plus.gradle and published under com.rokt with optional POM URL/license overrides on the Maven publish plugin. Rokt SDK versions are centralized in root gradle.properties (roktSdkVersion, roktPaymentExtensionVersion); the Rokt kit now reads roktSdkVersion instead of a hardcoded roktsdk version.

release-publish.yml publishes the Rokt kit to mavenLocal (so the umbrella resolves mParticle artifacts without a Central propagation race), then publishes rokt-sdk-plus to Maven Central using ROKT_* signing/Nexus secrets.

Reviewed by Cursor Bugbot for commit 6bbb68e. Bugbot is set up for automated code reviews on this repo. Configure here.

@sonarqubecloud

Copy link
Copy Markdown

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