Skip to content

Redistribute IAB OMID AAR as so.kontext.iab:omsdk-android (0.0.6) - #9

Merged
JakubMrozek merged 1 commit into
mainfrom
release/0.0.6
May 22, 2026
Merged

Redistribute IAB OMID AAR as so.kontext.iab:omsdk-android (0.0.6)#9
JakubMrozek merged 1 commit into
mainfrom
release/0.0.6

Conversation

@JakubMrozek

Copy link
Copy Markdown
Member

Summary

  • New subproject :omsdk-android — thin republish of the unmodified IAB Tech Lab Open Measurement SDK Android AAR under so.kontext.iab:omsdk-android:1.6.4. IAB Tech Lab distributes the original AAR off Maven Central via their compliance portal, so consumers of any Kontext SDK on Android (sdk-kotlin, sdk-react-native, sdk-flutter) previously had to vendor it locally. After 0.0.6, the OMID classes resolve transitively from Maven Central.
  • :kontext-kit-android declares the redistribution at runtime scope in its published POM (via implementation(project(":omsdk-android"))). OmManager continues to access OMID purely via reflection, so consumers don't need OMID on their compile classpath — AGP merges the AAR classes into the final APK at packaging time.

License compliance

Redistribution complies with OM License v1.1 Section 4:

  • AAR shipped unmodified in Object form (no recompilation, no patching) — omsdk-android/omsdk-android-1.6.4.aar is the byte-for-byte original from the IAB Tech Lab portal.
  • omsdk-android/LICENSE ships the full OM License v1.1 text alongside the artifact in the source repo.
  • Published POM references the license URL and name in the <licenses> block (visible to anyone resolving so.kontext.iab:omsdk-android from Maven Central).

Section 2(e) (Source-form confidentiality) does not apply — we only ship Object form. Section 2(b) (IVC Certificate for Integrators) is satisfied separately via the ongoing sdk-kotlin OMID compliance certification.

CI / publish wiring

./gradlew publishToMavenCentral from the root project transitively publishes both :kontext-kit-android AND :omsdk-android — verified via --dry-run. No changes to .github/workflows/publish.yml needed; the existing secrets and command line flags work for both modules.

Local verification (./gradlew :publishToMavenLocal) confirmed:

  • so.kontext.iab:omsdk-android:1.6.4 publishes a 104KB AAR matching the IAB original (5 entries: proguard.txt, R.txt, AndroidManifest.xml, classes.jar, AAR metadata).
  • so.kontext.kit:kontext-kit-android:0.0.6 POM declares so.kontext.iab:omsdk-android:1.6.4 at <scope>runtime</scope>.

Why a separate subproject (not a classifier artifact on the main module)

Tried wrapping the AAR as a classifier artifact on :kontext-kit-android — downstream consumers can't transitively resolve classifier deps without explicit artifact { classifier = ... } blocks, which defeats the whole "consume from Maven Central, OMID just works" goal. A separate publication with its own coordinate flows through Gradle's normal transitive resolution.

Do not merge

Per release plan, this PR opens against main so the user can:

  1. Test the local artifacts against sdk-kotlin's release/4.0.1 branch (companion PR includes includeBuild substitution).
  2. Once both PRs validate end-to-end, merge both and tag.

Test plan

  • ./gradlew test spotlessCheck detekt passes locally (verified: BUILD SUCCESSFUL across all three).
  • ./gradlew :omsdk-android:publishToMavenLocal produces a 104KB AAR + POM with <scope> removed (no transitive deps on the redistribution itself).
  • ./gradlew :publishToMavenLocal produces a kontext-kit-android-0.0.6.pom listing so.kontext.iab:omsdk-android:1.6.4 at runtime scope.
  • sdk-kotlin release/4.0.1 PR builds against this branch via includeBuild ../kontextkit-android.
  • Manual smoke: run sdk-kotlin example app against the integrated stack, confirm OMID sessions start successfully (IAB validator).

🤖 Generated with Claude Code

Adds a thin `:omsdk-android` subproject that republishes the unmodified
IAB Tech Lab Open Measurement SDK Android AAR under a Kontext-owned
group ID. The main `:kontext-kit-android` module declares the
redistribution as a `runtime` dep so consumers (sdk-kotlin,
sdk-react-native, sdk-flutter on Android) resolve OMID transitively
from Maven Central without vendoring the AAR locally.

Redistribution complies with OM License v1.1 Section 4: AAR shipped
unmodified in Object form, LICENSE bundled in the source repo and
referenced from the published POM.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@JakubMrozek
JakubMrozek merged commit d8c86fa into main May 22, 2026
1 check passed
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