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

Flutter发布版本Admob广告无法显示问题求助

解决Release版本AdMob广告不显示的思路

针对你遇到的Debug版本AdMob广告正常、Release版本无广告的问题,结合你提供的配置,给出以下具体排查和解决步骤:

1. 补充完善ProGuard规则

当前的ProGuard规则覆盖范围不足,AdMob和Firebase的部分核心类、回调、注解可能被混淆移除,建议更新proguard-rules.pro为:

# 保留AdMob核心类及回调、监听器
-keep public class com.google.android.gms.ads.** { *; }
-keep public class com.google.android.gms.ads.**$Callbacks { *; }
-keep public class com.google.android.gms.ads.**Listener { *; }

# 保留Firebase相关类及关键属性
-keep class com.google.firebase.** { *; }
-keepnames class com.google.firebase.**
-keepattributes Signature, InnerClasses, EnclosingMethod, *Annotation*

# 保留Parcelable实现类的CREATOR
-keepclassmembers class * implements android.os.Parcelable {
    public static final android.os.Parcelable$Creator CREATOR;
}

# 保留Flutter google_mobile_ads插件类(若使用该插件)
-keep class io.flutter.plugins.googlemobileads.** { *; }

2. 确认Release版本SHA-1已添加到AdMob控制台

Debug和Release版本使用不同签名密钥,对应的SHA-1指纹不同,AdMob会验证该指纹:

  • 获取Release签名SHA-1:执行命令 keytool -list -v -keystore 你的release密钥库路径 -alias 密钥别名
  • 登录AdMob控制台,找到对应应用,在应用设置中添加该Release的SHA-1指纹

3. 临时关闭R8优化排查

Android Gradle插件默认用R8做代码优化,其规则比ProGuard更激进。可在项目根目录gradle.properties中添加:

android.enableR8=false

构建Release版本测试,若广告正常显示,说明是R8优化导致的,再针对性调整ProGuard规则。

4. 检查shrinkResources的影响

开启shrinkResources=true可能误删AdMob依赖的资源文件,可临时将其设为false测试:

release {
    shrinkResources false
    // 其他配置不变
}

若恢复正常,可创建res/raw/keep.xml手动保留AdMob所需资源:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/admob_*,@drawable/admob_*,@string/admob_*" />

5. 查看Release版本的AdMob日志

通过adb抓取Release版本的AdMob日志,定位具体错误:

adb logcat -s Ads

重点关注ClassNotFoundException、Initialization failed、Ad request failed等关键字段,这些会直接指出问题根源。

6. 核对依赖版本兼容性

你使用的Firebase BOM版本31.0.2,建议明确添加匹配的AdMob依赖:

implementation 'com.google.android.gms:play-services-ads:22.4.0'

该版本与Firebase BOM 31.0.2完全兼容。

7. 确认包名一致性

注意到build.gradle中的applicationId为com.buzzr.psl,但AndroidManifest.xml的package为com.iqonic.news_flutter。虽然applicationId是最终生效的包名,但建议确保AdMob控制台注册的应用包名与applicationId一致,避免潜在配置冲突。

内容的提问来源于stack exchange,提问作者Shaun Fortmann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:08