Repository navigation
[dependabot]: Bump com.android.billingclient:billing from 8.0.0 to 9.1.0 in /packages/in_app_purchase/in_app_purchase_android/android - #12414
Open
dependabot[bot] wants to merge 1 commit into
Open
dependabot[bot] wants to merge 1 commit into
dependabot[bot] wants to merge 1 commit into
Conversation
Bumps com.android.billingclient:billing from 8.0.0 to 9.1.0. --- updated-dependencies: - dependency-name: com.android.billingclient:billing dependency-version: 9.1.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]>
fluttergithubbot
approved these changes
Aug 10, 2026
Contributor
|
autosubmit label was removed for flutter/packages/12414, because - The status or check suite Dashboard Checks has failed. Please fix the issues identified (or deflake) before re-applying this label. |
11 tasks done
auto-submit Bot
pushed a commit
that referenced
this pull request
Oct 19, 2026
Updates `com.android.billingclient:billing` from 8.0.0 to 9.1.0 in `in_app_purchase_android`. **Why the minSdk change is required.** Play Billing Library 9 declares `minSdkVersion 23` in its own AAR manifest (8.0.0 declared 21). With the plugin still on `minSdk = 21`, the manifest merger fails in any consuming app: ``` Manifest merger failed : uses-sdk:minSdkVersion 21 cannot be smaller than version 23 declared in library [com.android.billingclient:billing:9.1.0] ``` The library module itself still builds at 21, so this only surfaces in the app that consumes the plugin. Raising the plugin's `minSdk` to 23 makes the constraint explicit. Flutter's own `flutter.minSdkVersion` is already 24, so there is no practical impact on clients. The same floor is imposed a second time transitively, via `play-services-basement` 18.9.0. **No removed APIs are used.** Diffing the public API of `billing-8.0.0.aar` against `billing-9.1.0.aar` shows v9 removes exactly seven classes — `SkuDetails`, `SkuDetailsParams(.Builder)`, `SkuDetailsResponseListener`, `BillingClient.SkuType`, `QueryPurchaseHistoryParams(.Builder)` — plus `BillingFlowParams.Builder.setSkuDetailsList`. None appear anywhere under `android/src`. `PurchaseHistoryRecord`, which `Translator.kt` still imports, survives into 9.1.0. **Deprecation.** `SubscriptionUpdateParams.Builder.setSubscriptionReplacementMode` is deprecated as of 8.1.0 but remains functional in 9.x. Because the example builds the plugin with `-Xlint:all -Werror`, this breaks the build, so it is suppressed with an explanatory comment rather than migrated. Migrating to `SubscriptionProductReplacementParams` is not a drop-in change: it renumbered the replacement mode constants, which would alter the values carried by the Dart `ReplacementMode` enum. That belongs in its own breaking change. **Behaviour change reaching clients.** Under v9, a Play Store blocked by the system (for example OEM-customized kids mode) reports `BILLING_UNAVAILABLE` instead of `ERROR`. The plugin maps response codes 1:1 and branches on neither value, so no plugin code changes; but apps that branch on the code, or match on the stringified code in `IAPError.message`, are affected. This is called out in the CHANGELOG. Also corrects the documentation for `BillingResponse.billingUnavailable` (described the legacy "billing API version not supported" meaning) and `BillingResponse.serviceUnavailable` (described a network outage, which is what `networkError` means). This supersedes #12414, the Dependabot version-only bump, which does not include the required `minSdk` change and therefore does not build. ## Testing Automated: all existing Dart and native unit tests pass against 9.1.0, and the example app builds. Manual, against a real Play Console app running this branch with billing 9.1.0: - product queries (`queryProductDetails`) return the expected products, prices and offers - restoring past purchases works Not exercised manually: the subscription replacement path (`setSubscriptionReplacementMode`), which is the deprecated call suppressed in this PR, and consumable purchase/consumption. Flagging that explicitly since it is the least-covered part of this change — note also that the plugin's unit tests mock `BillingClient` entirely, so none of them exercise the real library at runtime. Fixes flutter/flutter#189974 ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. **Test exemption:** this is a manual dependency roll, which Tree Hygiene lists as *not* automatically exempt, so I am requesting one explicitly. The plugin's behaviour is unchanged: response codes are passed through 1:1 (`Translator.kt` -> pigeon -> `pigeon_converters.dart`), and no branch in the plugin keys on `error` or `billingUnavailable`. The one user-visible change originates in Google's library, not in plugin code, and so cannot be exercised by a plugin test. Happy to add tests if a reviewer sees a seam I have missed. **On the deprecation suppression:** if the team would rather take the breaking `SubscriptionProductReplacementParams` migration now instead of suppressing, I am glad to do that here or in a follow-up — say which you prefer. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps com.android.billingclient:billing from 8.0.0 to 9.1.0.
You can trigger a rebase of this PR by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)