Skip to content

Bump targetSdk to 35 and Gradle to 8.1.0#113

Open
pimpimmi wants to merge 2 commits into
masterfrom
bump-target-sdk-35
Open

Bump targetSdk to 35 and Gradle to 8.1.0#113
pimpimmi wants to merge 2 commits into
masterfrom
bump-target-sdk-35

Conversation

@pimpimmi

@pimpimmi pimpimmi commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Bump compileSdk/targetSdk to 35 and minSdk to 21 for both library and sample app
  • Bump Android Gradle Plugin to 8.7.3 and Gradle wrapper to 8.11.1
  • Bump Robolectric from 4.11.1 to 4.14.1 for SDK 35 test support
  • Remove Jetifier (android.enableJetifier) — not needed with pure AndroidX dependencies
  • Bump version to 4.0.2

Breaking change: redirect intent-filter moved to consuming app

AGP 8.x AAPT rejects unresolved ${redirectPathPattern} manifest placeholders in library builds. To resolve this, the RedirectUriReceiverActivity intent-filter has been moved from the library manifest to the consuming app's manifest.

Consumers must add the following to their AndroidManifest.xml:

<activity
    android:name="com.spotify.sdk.android.auth.browser.RedirectUriReceiverActivity"
    android:exported="true">
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data
            android:host="${redirectHostName}"
            android:scheme="${redirectSchemeName}"
            android:pathPattern="${redirectPathPattern}"/>
    </intent-filter>
</activity>

A custom lint rule (MissingRedirectUriIntentFilter) is now shipped with the AAR. If the intent-filter is missing, the consuming app's build will fail with a clear error message.

Other changes

  • Added ACTION_VIEW/CATEGORY_BROWSABLE to <queries> for Custom Tabs package visibility on API 35
  • New auth-lint-checks module with RedirectUriReceiverActivityDetector

Why

New apps published on Google Play need to target SDK version 35.

Test plan

  • Full ./gradlew build passes (294 tasks, all unit tests green)
  • Verified lint rule fails build when intent-filter is missing
  • Verified lint rule passes when intent-filter is present
  • Verified AAR manifest has no baked-in placeholder values
  • Verified lint.jar is packaged in the AAR
  • Verify sample app runs on a device/emulator

🤖 Generated with Claude Code

pimpimmi and others added 2 commits June 11, 2026 13:24
- Bump compileSdk/targetSdk to 35 and minSdk to 21
- Bump AGP to 8.1.0 and Gradle wrapper to 8.5
- Bump Robolectric to 4.14.1 for SDK 35 support
- Remove Jetifier (not needed with pure AndroidX dependencies)
- Add default manifest placeholders in auth-lib defaultConfig
- Fix redirectPathPattern in auth-sample to start with /
- Add compileOptions/kotlinOptions for JVM target 1.8
- Bump version to 4.0.2

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Prepend / to pathPattern in auth flavor manifest so the placeholder
passes AAPT validation during the library build without baking values
into the AAR. Consumers who previously set redirectPathPattern to /.*
should change it to .* since the leading slash is now added by the
library manifest.

Also removes default manifestPlaceholders from defaultConfig (they
were being baked into the AAR), bumps Robolectric to 4.14.1 for
SDK 35 support, removes Jetifier, and updates the changelog.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@pimpimmi pimpimmi force-pushed the bump-target-sdk-35 branch from 5734e2e to 06211e4 Compare June 18, 2026 10:30
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