You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成google_mobile_ads: ^0.13.0包后Flutter应用启动失败的技术求助

Flutter集成google_mobile_ads: ^0.13.0后启动崩溃?看这篇解决!

嘿,看了你的报错日志,核心问题一眼就看出来了:com.google.android.gms.ads.reward.RewardedVideoAdListener类找不到!这是因为你用的admob_flutter插件还在依赖旧版AdMob SDK的API,而google_mobile_ads: ^0.13.0已经引入了新版SDK,俩家伙的API不兼容,直接导致启动崩溃。

具体解决步骤

  • 换掉过时的插件:admob_flutter已经很久没更新维护了,建议直接把它从项目里移除,完全改用官方的google_mobile_ads包来实现广告功能。

    1. 打开pubspec.yaml,删除admob_flutter的依赖条目,保留google_mobile_ads: ^0.13.0。
    2. 执行命令:flutter pub get更新依赖。
  • 适配新版广告API:官方的google_mobile_ads已经用RewardedAd替代了旧的RewardedVideoAd系列API,你需要把原来的激励视频广告代码改成官方写法,举个简单例子:

    import 'package:google_mobile_ads/google_mobile_ads.dart';
    
    RewardedAd? _rewardedAd;
    
    // 初始化广告服务
    void initAdService() {
      MobileAds.instance.initialize();
      loadRewardedAd(); // 提前加载广告
    }
    
    // 加载激励视频广告
    void loadRewardedAd() {
      RewardedAd.load(
        adUnitId: '你的激励视频广告ID', // 替换成你自己的ID
        request: const AdRequest(),
        rewardedAdLoadCallback: RewardedAdLoadCallback(
          onAdLoaded: (ad) {
            _rewardedAd = ad;
            // 设置广告全屏事件监听
            _rewardedAd?.fullScreenContentCallback = FullScreenContentCallback(
              onAdDismissedFullScreenContent: (ad) {
                ad.dispose();
                loadRewardedAd(); // 广告关闭后重新加载
              },
              onAdFailedToShowFullScreenContent: (ad, error) {
                ad.dispose();
                loadRewardedAd();
              },
            );
          },
          onAdFailedToLoad: (error) {
            print('激励视频广告加载失败: ${error.message}');
          },
        ),
      );
    }
    
    // 展示激励视频广告
    void showRewardedAd() {
      if (_rewardedAd != null) {
        _rewardedAd?.show(
          onUserEarnedReward: (ad, reward) {
            // 这里写用户获得奖励后的逻辑,比如给金币、解锁功能
            print('用户获得奖励:${reward.amount} ${reward.type}');
          },
        );
      }
    }
    
  • 清理缓存重建项目:

    1. 执行命令:flutter clean清除旧的构建缓存。
    2. 重新运行项目:flutter run,应该就能正常启动了。

额外提醒

如果实在不想换插件,你可以尝试强制降低AdMob SDK的版本,但真心不推荐这么做——旧版本不仅可能有安全漏洞,后续和Flutter新版本的兼容性也会越来越差,不如直接切换到官方维护的插件一劳永逸。

内容的提问来源于stack exchange,提问作者Desilio Neto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 17:47:33