Skip to content

Releases: EncoreKit/android-sdk

Release list

Release v2.1.0

Choose a tag to compare

@ryan-encorekit ryan-encorekit released this 06 Sep 23:18

Encore Android SDK 2.1.0

Maven Central: com.encorekit:encore:2.1.0

implementation("com.encorekit:encore:2.1.0")

Play Billing floor raised to 8.0.0

The SDK now declares com.android.billingclient:billing:8.0.0 (previously billing-ktx:7.1.1). This fixes a NoSuchMethodError in the purchase reconciler that occurred when a host app's dependency graph resolved Play Billing 8.x or 9.x: the SDK's prebuilt bytecode called enablePendingPurchases() with a signature that Billing 8.0.0 removed.

What this means for your build:

  • If your app already resolves Billing 8.x or 9.x, nothing changes for you except that the error is gone. Gradle resolves the highest version in the graph.
  • If your app is on Billing 7.x, resolution will raise you to 8.0.0. Google Play stopped accepting Billing 7.x submissions on 2026-08-31, so this is a move you need regardless.
  • Claim-only integrations (no purchase controller registered) are unaffected by Billing entirely. Billing is a runtime-scope dependency; the claim and entitlement paths do not touch it. Stripping com.android.vending.BILLING from the merged manifest with tools:node="remove" is fine in that configuration.

Purchase controller is optional

A claim-only integration with no purchaseController is a supported configuration. With none registered, an offer configured for in-app purchase resolves PublisherOutcome.NotAttempted, a warning is logged, and nothing is charged.

Other changes

  • Users handshake: the SDK announces the user record on identity creation (POST /publisher/sdk/v1/users) and announces aliases on identify().
  • Error reporting: silent degradation paths now report to the backend with full stack traces.
  • SDUI: snapped carousel cards centre on any viewport width (scrollAlignment: center); the offer footer's copy column is capped so the claim button always lays out.
  • Outbox: a transient failure retires only its own target rather than the whole pass; a non-suspending submit is available for callers that cannot await the persist.
  • Toolchain: built with the Kotlin 2.1 compiler; the language floor stays 1.9 and kotlin-stdlib is declared at that floor rather than stripped from the POM.

Compatibility

All published guarantees are within the 2.x major. Public API signatures are baselined and checked in CI; no public signature changed in this release.