【问题标题】:admob ads are not shown with pro guardpro Guard 不显示 admob 广告
【发布时间】:2012-10-31 21:52:43
【问题描述】:

我开发了 android 应用程序,并使用 admob sdk 6.2.1 来展示广告,当我在我的真实设备和模拟器上测试该应用程序时,会显示广告。 但是当我对我的应用应用 pro Guard 并在我的设备上进行测试时(我也在其他设备上测试过)广告没有出现,请帮忙!

【问题讨论】:

  • 你是用apk检查还是直接运行应用到手机???

标签: android admob proguard


【解决方案1】:

将此添加到您的 proguard:

-keep class com.google.ads.** # Don't proguard AdMob classes
-dontwarn com.google.ads.** # Temporary workaround for v6.2.1. It gives a warning that you can ignore

2020 年编辑:

一段时间以来,Google 移动广告 SDK 已经发布了自己的 proguard 规则,这些规则将清单合并到您的应用中,因此您无需自己添加任何内容。合并后的规则还保留了来自第三方中介适配器的方法,这些方法是使中介工作所需的。

【讨论】:

  • 这个答案是对的,但是我们要在proguard-project.txt中写这两行
  • @EricLeichtenschlag 最后两个星号有什么作用?是全部导入吗?如果它以ads** 结尾而没有点怎么办?另外,{*;} 也做什么?
  • @Mr.Nacho - *** 是通配符 - * 是任意数量的字符,不包括包分隔符 (.),** 是任意数字字符周期。
【解决方案2】:

From the docs:

要安全地将 ProGuard 与 Google 移动广告一起使用,请将以下内容添加到您的 ProGuard 配置中:

-keep public class com.google.android.gms.ads.** {
    public *;
}

-keep public class com.google.ads.** {
    public *;
}

这将防止公共类上的所有公共方法被混淆。

如果您将 AdMob 中介与其他广告网络一起使用,您还应该为每个 SDK 和适配器库保留来自公共类的公共方法。

【讨论】:

    【解决方案3】:

    Android 中 Admob 的 Proguard 规则

    -keep public class com.google.android.gms.ads.**{
       public *;
    }
    
    # For old ads classes
    -keep public class com.google.ads.**{
       public *;
    }
    
    # For mediation
    -keepattributes *Annotation*
    
    # Other required classes for Google Play Services
    # Read more at http://developer.android.com/google/play-services/setup.html
    -keep class * extends java.util.ListResourceBundle {
       protected Object[][] getContents();
    }
    
    -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
       public static final *** NULL;
    }
    
    -keepnames @com.google.android.gms.common.annotation.KeepName class *
    -keepclassmembernames class * {
       @com.google.android.gms.common.annotation.KeepName *;
    }
    
    -keepnames class * implements android.os.Parcelable {
       public static final ** CREATOR;
    }
    

    【讨论】:

    • 我写了标题 Admob Proguard 规则,很明显你需要在 proguard 规则文件中添加这段代码。
    • 理解并使其发挥作用需要花费大量时间。在 Flutter 中,默认没有 proguard-rules.pro 文件。我的广告没有展示,因为 Admob 一开始就需要独特的流量,以确保广告展示给正确的用户,而不是开发者。发布模式下的测试广告正在展示,这意味着不需要 proguard-rules.pro 文件。
    • 好的,我会更新我的答案,这仅适用于 android,并且与早期版本的 admob 库一起使用效果更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多