11

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

4

3 回答 3

15

将此添加到您的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 规则,这些规则将清单合并到您的应用程序中,因此您无需自己添加任何内容。合并的规则还保留了来自第三方中介适配器的方法,这些方法是使中介工作所需的。

于 2012-11-12T18:58:23.857 回答
11

从文档

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

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

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

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

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

于 2013-12-13T21:52:13.537 回答
1

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;
}
于 2019-02-18T11:00:22.433 回答