AdMob MobileAds.initialize()抛出Integer转String类型转换崩溃求助
AdMob 22.6.0 类型转换崩溃问题排查与临时方案
问题描述
通过Firebase Crashlytics监测到应用出现部分崩溃,该问题与Google AdMob库(版本22.6.0)直接相关:AdMob库在操作SharedPreferences时触发类型转换异常,具体为java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String,导致偏好设置获取失败。
当前应用覆盖约230k用户,初期仅6人出现该崩溃,但后续崩溃数量持续增加,且开始影响其他使用同版本AdMob的应用。
崩溃栈信息
Fatal Exception: java.lang.ClassCastException java.lang.Integer cannot be cast to java.lang.String android.app.SharedPreferencesImpl.getString (SharedPreferencesImpl.java:302) com.google.android.gms.ads.internal.scionintegration.a.onSharedPreferenceChanged (:com.google.android.gms.policy_ads_fdr_dynamite@240304709@240304704034.602821767.602821767:73) com.google.android.gms.ads.internal.scionintegration.m.a (:com.google.android.gms.policy_ads_fdr_dynamite@240304709@240304704034.602821767.602821767:106) com.google.android.gms.ads.nonagon.a.s (:com.google.android.gms.policy_ads_fdr_dynamite@240304709@240304704034.602821767.602821767:439) com.google.android.gms.ads.nonagon.a.b (:com.google.android.gms.policy_ads_fdr_dynamite@240304709@240304704034.602821767.602821767:5) com.google.android.gms.ads.ChimeraMobileAdsSettingManagerCreatorImpl.getMobileAdsSettingManager (:com.google.android.gms.policy_ads_fdr_dynamite@240304709@240304704034.602821767.602821767:52) com.google.android.gms.ads.internal.client.bx.bR (:com.google.android.gms.policy_ads_fdr_dynamite@240304709@240304704034.602821767.602821767:40) m.ajn.onTransact (:com.google.android.gms.policy_ads_fdr_dynamite@240304709@240304704034.602821767.602821767:21) android.os.Binder.transact (Binder.java:1173) obj.gL (:com.google.android.gms@240713038@24.07.13 (190400-607434947):8) com.google.android.gms.ads.internal.client.ay.getMobileAdsSettingManager (:com.google.android.gms@240713038@24.07.13 (190400-607434947):12) com.google.android.gms.ads.MobileAdsSettingManagerCreatorImpl.getMobileAdsSettingManager (:com.google.android.gms@240713038@24.07.13 (190400-607434947):42) com.google.android.gms.ads.internal.client.az.fL (:com.google.android.gms@240713038@24.07.13 (190400-607434947):40) obk.onTransact (:com.google.android.gms@240713038@24.07.13 (190400-607434947):101) android.os.Binder.transact (Binder.java:1173) com.google.android.gms.internal.ads.zzavg.zzbh (com.google.android.gms:play-services-ads-base@@22.6.0:1) com.google.android.gms.ads.internal.client.zzcp.zze (zzcp.java:169) com.google.android.gms.ads.internal.client.zzeq.zza (zzeq.java:169) com.google.android.gms.ads.internal.client.zzaq.zzc (com.google.android.gms:play-services-ads-lite@@22.6.0:169) com.google.android.gms.ads.internal.client.zzax.zzf (com.google.android.gms:play-services-ads-lite@@22.6.0:126) com.google.android.gms.ads.internal.client.zzax.zzd (com.google.android.gms:play-services-ads-lite@@22.6.0:126) com.google.android.gms.ads.internal.client.zzej.zzA (com.google.android.gms:play-services-ads-lite@@22.6.0:17) com.google.android.gms.ads.internal.client.zzej.zzm (zzej.java:53) com.google.android.gms.ads.MobileAds.initialize (com.google.android.gms:play-services-ads-lite@@22.6.0:53) com.MY_APP_PACKAGE.ads.AdMob.initAdmob (AdMob.kt:128)
社区反馈与关联推测
目前已有其他开发者反馈相同问题,相关讨论集中在谷歌AdMob SDK官方群组、Reddit开发者社区及Google问题追踪平台。结合时间线来看,崩溃出现当天AdMob Dashboard API曾发生故障,推测该问题与API故障存在关联。
临时解决方案
若应用已配置Firebase Remote Config,可新增控制参数,通过开关逻辑决定是否调用MobileAds.initialize()及加载UMP库的同意信息,以此避免触发崩溃。
内容的提问来源于stack exchange,提问作者user924
相关产品推荐
相关产品推荐

