在使用flurry
进行Google Play游戏时,我的应用无法获得ProGuard
广告。如果我在没有ProGuard
的情况下运行app,一切正常。
我启用Log并flurry
SDK写下一个信息:
02-20 16:31:09.765 8953-8953/? D/FlurryAdServingApp﹕ fetchAndDisplay: Banner
02-20 16:31:14.885 8953-8953/? D/FlurryAdServingApp﹕ Failed 20
02-20 16:31:17.960 8953-9041/? W/System.err﹕ java.lang.ClassCastException: com.flurry.sdk.it cannot be cast to com.flurry.android.impl.ads.protocol.v13.AdUnit
02-20 16:31:17.960 8953-9041/? W/System.err﹕ at com.flurry.sdk.ci$4.a(Unknown Source)
02-20 16:31:17.960 8953-9041/? W/System.err﹕ at com.flurry.sdk.ci$4.a(Unknown Source)
02-20 16:31:17.960 8953-9041/? W/System.err﹕ at com.flurry.sdk.gg.o(Unknown Source)
02-20 16:31:17.960 8953-9041/? W/System.err﹕ at com.flurry.sdk.gg.d(Unknown Source)
02-20 16:31:17.960 8953-9041/? W/System.err﹕ at com.flurry.sdk.gg$1.a(Unknown Source)
02-20 16:31:17.960 8953-9041/? W/System.err﹕ at com.flurry.sdk.gh.o(Unknown Source)
02-20 16:31:17.960 8953-9041/? W/System.err﹕ at com.flurry.sdk.gh.a(Unknown Source)
02-20 16:31:17.960 8953-9041/? W/System.err﹕ at com.flurry.sdk.gg.a(Unknown Source)
02-20 16:31:17.960 8953-9041/? W/System.err﹕ at com.flurry.sdk.hk.run(Unknown Source)
我不明白为什么他写下未知来源如果在proguard-project.txt
我写下:
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
-keepattributes *Annotation*,EnclosingMethod
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
# Google Play Services library
-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;
}
#If you are using the Google Mobile Ads SDK, add the following:
# Preserve GMS ads classes
-keep class com.google.android.gms.ads.** { *;
}
-dontwarn com.google.android.gms.ads.**
#If you are using the InMobi SDK, add the following:
# Preserve InMobi Ads classes
-keep class com.inmobi.** { *;
}
-dontwarn com.inmobi.**
#If you are using the Millennial Media SDK, add the following:
# Preserve Millennial Ads classes
-keep class com.millennialmedia.** { *;
}
-dontwarn com.millennialmedia.**
请帮助我。
答案 0 :(得分:5)
我有完全相同的错误消息,&#34; W / System.err:java.lang.ClassCastException:com.flurry.sdk.it无法强制转换为com.flurry.android.impl.ads.protocol。 v13.AdUnit&#34;
我联系Flurry支持,发送电子邮件至support@flurry.com,并在2个工作日后(今天),他们回答说:
感谢您与Flurry支持小组联系。在你的proguard配置中, 请你改变第3行:
-keepattributes *Annotation*,EnclosingMethod
到
-keepattributes *Annotation*,EnclosingMethod,Signature
请注意添加&#34;签名&#34;。请尝试这个新配置 如果有效,请告诉我们。
我对Proguard做了调整,Flurry广告现在似乎正在运作。 总结一下,Flurry的Proguard配置如下:
#Flurry
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
# Preserve Flurry mediation classes for DFP/AdMob Ads
-keep public class com.google.ads.mediation.flurry.**
作为参考,我使用FlurryAds-5.3.0.jar,FlurryAnalytics-5.3.0.jar和flurryAndroidDFPandAdMobMediationAdapter-5.0.0.r1.jar