Unity内购初始化报错:java.lang.ClassNotFoundException: PurchasesUpdatedListener
针对你遇到的Unity内购初始化报错java.lang.ClassNotFoundException: com.android.billingclient.api.PurchasesUpdatedListener,结合你的环境(Unity 2022.3.181、In App Purchasing 4.12.2、目标API 34),可以尝试以下修复步骤:
确认BillingClient依赖版本适配
打开Unity Package Manager,找到In App Purchasing包,查看其依赖的Google Play Billing Library版本是否为6.0+(适配API34的最低要求版本)。如果版本不符,尝试重新安装In App Purchasing包,或在Packages/manifest.json中手动指定兼容版本:"com.google.play.billing": "6.0.1"更新ProGuard/R8规则
替换原有规则为更完整的配置(兼容ProGuard和R8),添加到proguard-user.txt中:-keep interface com.android.billingclient.api.PurchasesUpdatedListener { *; } -keep class com.android.billingclient.api.** { *; } -keep class com.google.android.gms.tasks.** { *; }同时确保Unity Player Settings中Android的Minify选项设置为
Custom ProGuard File,并指定正确的规则文件路径。检查AndroidManifest配置
确认导出的AndroidManifest.xml中包含Billing权限:<uses-permission android:name="com.android.vending.BILLING" />清理缓存与构建目录
- 执行Unity菜单:
File > Build Settings > Clean Build Folder - 关闭Unity后删除项目根目录下的
Library文件夹,重启Unity重新生成缓存 - 若使用Android Studio打开导出项目,清理Studio的项目缓存(
File > Invalidate Caches...)
- 执行Unity菜单:
验证导出项目的Gradle依赖
将Unity项目导出到Android Studio,检查app模块的build.gradle中是否包含BillingClient依赖:implementation 'com.android.billingclient:billing:6.0.1'若缺失,手动添加后重新构建项目。
检查Player Settings配置
- 确保Minimum API Level不低于21(BillingClient要求的最低版本)
- 若开启了
Custom Main Gradle Template,检查模板中是否存在冲突的依赖配置,避免重复引入BillingClient。
内容的提问来源于stack exchange,提问作者Eli Blokh

