Skip to content

Bump targetSdk to 35 and Gradle to 8.1.0#113

Merged
pimpimmi merged 1 commit into
masterfrom
bump-target-sdk-35
Jul 1, 2026
Merged

Bump targetSdk to 35 and Gradle to 8.1.0#113
pimpimmi merged 1 commit 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
  • 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
  • Add ACTION_VIEW/CATEGORY_BROWSABLE to <queries> for Custom Tabs package visibility on API 35
  • Add compileOptions/kotlinOptions for JVM target 1.8
  • Bump version to 5.0.0

Breaking change

The RedirectUriReceiverActivity intent-filter must now be declared in the consuming app's AndroidManifest.xml. The library no longer provides it automatically.

Consuming apps must add the following to their manifest:

<activity
    android:name="com.spotify.sdk.android.auth.browser.RedirectUriReceiverActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data
            android:scheme="your-redirect-scheme"
            android:host="your-redirect-host"
            android:pathPattern="your-path-pattern"/>
    </intent-filter>
</activity>

If your redirect URI uses https://, add android:autoVerify="true" to the <intent-filter>.

A runtime check in AuthorizationClient.authorize() and AuthorizationClient.openLoginInBrowser() throws IllegalStateException if the intent-filter is missing.

See full migration instructions in the README.

Why

  • New apps published on Google Play need to target SDK version 35
  • AGP 8.x AAPT rejects unresolved ${redirectPathPattern} manifest placeholders in library builds — moving the intent-filter to the consuming app resolves this without workarounds

Test plan

  • Full ./gradlew build passes (290 tasks, all unit tests green)
  • Verified runtime check crashes when intent-filter is missing
  • Verified runtime check passes when intent-filter is present
  • Verified AAR manifest has no baked-in placeholder values
  • Verify sample app auth flow on API 35 device/emulator (Custom Tab, not plain browser)

🤖 Generated with Claude Code

@pimpimmi pimpimmi force-pushed the bump-target-sdk-35 branch from 5734e2e to 06211e4 Compare June 18, 2026 10:30
@pimpimmi pimpimmi force-pushed the bump-target-sdk-35 branch 2 times, most recently from 9d4c3bd to d1bbe08 Compare July 1, 2026 05:24
- Bump compileSdk/targetSdk to 35 and minSdk to 21
- Bump AGP to 8.7.3 and Gradle wrapper to 8.11.1
- Bump Robolectric to 4.14.1 for SDK 35 support
- Add compileOptions/kotlinOptions for JVM target 1.8
- Add ACTION_VIEW/BROWSABLE to <queries> for Custom Tabs
  package visibility on API 35

**Breaking Change**: The RedirectUriReceiverActivity intent-filter
must now be declared in the consuming app's AndroidManifest.xml.
The library no longer provides it automatically due to AGP 8.x
AAPT rejecting unresolved ${redirectPathPattern} placeholders
in library manifests. A runtime check throws IllegalStateException
if the intent-filter is missing.

Bump version to 5.0.0.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@pimpimmi pimpimmi force-pushed the bump-target-sdk-35 branch from d1bbe08 to fbfbbe5 Compare July 1, 2026 05:28

@veronikapetruskova veronikapetruskova left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks great!

@pimpimmi pimpimmi merged commit 65a6c93 into master Jul 1, 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.

2 participants