我开发了android应用程序,并使用admob sdk 6.2.1来展示广告,当我在真实设备和模拟器上测试该应用程序时,就会显示广告。但是,当我将Pro Guard应用到我的应用并在我的设备上对其进行测试(我也在其他设备上进行了测试)时,广告没有显示,请提供任何帮助!
将此添加到您的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 Mobile Ads SDK分发了自己的proguard规则,这些规则已将清单合并到您的应用中,因此您无需自行添加任何内容。合并的规则还保留了使中介起作用所需的第三方中介适配器的方法。
为了安全地将ProGuard与Google移动广告一起使用,请将以下内容添加到ProGuard配置中:
-keep public class com.google.android.gms.ads.** {
public *;
}
-keep public class com.google.ads.** {
public *;
}
这将防止混淆公共类上的所有公共方法。
如果您将AdMob中介与其他广告网络一起使用,则也应将每个SDK和适配器库的公共方法都保留在公共类之外。
Admob保护规则
-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;
}
-dontwarn com.google.common.base.**
-keep class com.google.common.base.** {*;}
-dontwarn com.google.errorprone.annotations.**
-keep class com.google.errorprone.annotations.** {*;}
-dontwarn com.google.j2objc.annotations.**
-keep class com.google.j2objc.annotations.** { *; }
-dontwarn java.lang.ClassValue
-keep class java.lang.ClassValue { *; }
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-keep class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement { *; }