【发布时间】:2012-10-31 21:52:43
【问题描述】:
我开发了 android 应用程序,并使用 admob sdk 6.2.1 来展示广告,当我在我的真实设备和模拟器上测试该应用程序时,会显示广告。 但是当我对我的应用应用 pro Guard 并在我的设备上进行测试时(我也在其他设备上测试过)广告没有出现,请帮忙!
【问题讨论】:
-
你是用apk检查还是直接运行应用到手机???
我开发了 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 移动广告 SDK 已经发布了自己的 proguard 规则,这些规则将清单合并到您的应用中,因此您无需自己添加任何内容。合并后的规则还保留了来自第三方中介适配器的方法,这些方法是使中介工作所需的。
【讨论】:
ads** 结尾而没有点怎么办?另外,{*;} 也做什么?
* 和 ** 是通配符 - * 是任意数量的字符,不包括包分隔符 (.),** 是任意数字字符周期。
要安全地将 ProGuard 与 Google 移动广告一起使用,请将以下内容添加到您的 ProGuard 配置中:
-keep public class com.google.android.gms.ads.** {
public *;
}
-keep public class com.google.ads.** {
public *;
}
这将防止公共类上的所有公共方法被混淆。
如果您将 AdMob 中介与其他广告网络一起使用,您还应该为每个 SDK 和适配器库保留来自公共类的公共方法。
【讨论】:
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;
}
【讨论】: