用途:指导 Android 应用从 Play Billing Library 8.x 升级到 9.x。PBL 9.0.0(2026-05-19 发布)未删除任何 API,v8 才是移除 Sku* 系列、queryPurchaseHistoryAsync 和无参 enablePendingPurchases() 的破坏性版本。若项目中仍引用 SkuDetails、querySkuDetailsAsync、SkuType 或无参 enablePendingPurchases(),说明基线实为 pre-v8,应先改用 pbl-v7-to-v9-migration。
主要改动:一、将依赖升级到 9.0.0,例如 implementation("com.android.billingclient:billing-ktx:9.0.0");因未移除 API,编译通常无需强制改动。二、确保 androidx.core 为 1.9 或更高,错误码重新分类依赖它。三、compileSdk 与 targetSdk 升到 35,minSdk 保持 23;旧 compileSdk 可能出现清单合并警告。四、更新被阻止商店的错误处理:Play Store 被系统阻止(儿童模式、家长控制、企业设备)时,v9 返回 BILLING_UNAVAILABLE 而非 v8 的通用 ERROR,并带 "Play Store is blocked" 调试信息;需将原按通用 ERROR 处理的商店不可用分支改到 BILLING_UNAVAILABLE。五、仅在使用 developer provided billing(PBL 8.3 External Payments)时,DeveloperProvidedBillingDetails.getLinkUri() 变为 @Nullable,需同时判断 null 与空字符串再解析。六、可选:借助 showInAppMessages 与 TRANSACTIONAL 类别展示应用内可选择加入的涨价消息,用户接受后返回 SUBSCRIPTION_STATUS_UPDATED,最长每 7 天一次。
验证:运行 ./gradlew clean assembleDebug 与 ./gradlew test;在受限制设备上确认返回 BILLING_UNAVAILABLE;确认 targetSdk 35 清单合并正常;先发布到内部测试轨道,观察至少一个结算周期。需注意 PBL 8 接受新应用与更新提交的截止日期为 2027-08-31,延长窗口至 2027-11-01,已发布的 v8 二进制仍可继续交易。具体价格、收费与统计数据暂未提供。