Skip to content

feat: widen urbanairship-core dependency to any 20.x#194

Open
jamesnrokt wants to merge 1 commit into
mainfrom
feat/widen-urbanairship-core-range
Open

feat: widen urbanairship-core dependency to any 20.x#194
jamesnrokt wants to merge 1 commit into
mainfrom
feat/widen-urbanairship-core-range

Conversation

@jamesnrokt

Copy link
Copy Markdown
Contributor

Summary

  • Replace the pinned api 'com.urbanairship.android:urbanairship-core:20.3.0' with the bounded range [20.3.0,21.0.0).
  • Lets partners adopt any 20.x release (currently 20.4.0–20.7.2 are published) without waiting for a new kit release.
  • Floor stays at 20.3.0 — the previously tested baseline; we don't claim support for 20.0–20.2.
  • Closed upper bound at 21.0.0 keeps a future Airship 21.x out of the resolved set; bumping to 21.x will be an explicit kit-release decision.

Motivation

A partner using this kit wants to upgrade their Airship integration to 20.6.0. Today the hard pin at 20.3.0 forces them to either downgrade the rest of their app or wait for a kit release.

How partners get a specific 20.x

After this lands, consumers have two options:

  1. Do nothing — Gradle resolves the range to the highest compatible 20.x.
  2. Pin in their appimplementation 'com.urbanairship.android:urbanairship-core:20.6.0'. Gradle's conflict resolution picks the explicit pin.

Test plan

  • ./gradlew lint testRelease publishReleaseLocal succeeds standalone against the top of the range (20.7.2).
  • ./gradlew lint testRelease publishReleaseLocal succeeds against the floor (20.3.0) — -Pversion=... plus a forced urbanairship-core:20.3.0 in a scratch consumer.
  • Smoke-test a sample app pinning 20.6.0 to confirm the kit + Airship 20.6.0 coexist.

Release note

The kit's next release should be a minor bump (e.g., 5.x.05.(x+1).0) since it changes the public dependency contract. Consumers already on a previous kit version are unaffected until they upgrade the kit.

🤖 Generated with Claude Code

Replace the pinned `urbanairship-core:20.3.0` with a bounded range
`[20.3.0,21.0.0)` so consumers can opt into newer 20.x versions
(20.4.0–20.7.x available today) without waiting for a kit release.

The closed upper bound at 21.0.0 keeps a future Airship major out of
the resolved set, so consumers explicitly opt in to 21.x via a new
kit release.

Consumers who want a specific 20.x can pin it in their own app:

    implementation 'com.urbanairship.android:urbanairship-core:20.6.0'

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@samdozor samdozor self-requested a review May 27, 2026 23:47

@samdozor samdozor left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The issue with this is that it will cause non-repeatable builds for all clients - unless they specifically put the airship version in their own build gradle. So we need to tell all clients to do that. The client asking for this will need to specifically put airship in their gradle to ensure a repeatable build - so why not have that client do something like this, rather than asking all clients to change?

dependencies {
    implementation('com.mparticle:android-urbanairship-kit:5+') {
        exclude group: 'com.urbanairship.android', module: 'urbanairship-core'
    }
    implementation 'com.urbanairship.android:urbanairship-core:21.0.0
}

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.

2 participants