添加in_app_purchase依赖后google_mobile_ads报MissingPluginException如何解决
冲突根因
该问题由in_app_purchase和google_mobile_ads依赖的Play服务/原生核心库版本不兼容导致,添加新依赖后旧版本的广告插件原生实现被覆盖,无法完成方法通道注册,因此抛出MissingPluginException。常规的清理重启无法解决版本不匹配问题。
解决方案
1. 锁定插件兼容版本
首先在pubspec.yaml中固定两个插件的兼容版本,禁止使用^开头的浮动版本号,推荐经过验证的无冲突版本组合:
dependencies: google_mobile_ads: 2.3.0 in_app_purchase: 3.1.5
2. Android端配置调整
- 打开项目
android/build.gradle文件,在buildscript -> ext代码块下添加版本锁定配置:
buildscript { ext { // 原有配置(如flutter.minSdkVersion等)保留 kotlin_version = '1.7.10' playServicesAdsVersion = "21.4.0" billingClientVersion = "5.1.0" } }
- 打开
android/app/build.gradle文件,在defaultConfig代码块中开启多DEX支持:
defaultConfig { // 原有配置保留 multiDexEnabled true minSdkVersion 19 // 若原有minSdk低于19需调整到19及以上 }
- 在同文件的
dependencies代码块中添加多DEX依赖:
dependencies { // 原有配置保留 implementation "androidx.multidex:multidex:2.0.1" }
3. iOS端配置调整
- 打开项目
ios/Podfile,在文件最顶部添加版本锁定规则:
pod 'Google-Mobile-Ads-SDK', '~> 10.7.0' pod 'PurchasesHybridCommon', '~> 4.4.0'
- 终端进入ios目录,依次执行以下命令重新安装原生依赖:
pod deintegrate pod install --repo-update
4. 重新编译运行
执行flutter pub get后直接启动项目即可,无需额外清理操作。
内容的提问来源于stack exchange,提问作者Исфан Джамалутдинов
相关产品推荐
相关产品推荐

