[Android]-Admob配置过多导致的慢消息

在使用BlockCanary检测慢消息时,遇到了这样的一个日志:

从日志中,可以初步判断,是由于谷歌的广告sdk,调用了Uri.decode方法.

typescript 复制代码
public static String decode(String s) {
    if (s == null) {
        return null;
    }
    return UriCodec.decode(
            s, false /* convertPlus */, StandardCharsets.UTF_8, false /* throwOnFailure */);
}

这不禁让我好奇,究竟是什么样的字符串,能耗时(500ms~10003ms)呢。

为了一探究竟,我通过代码插桩的方式,在decode方法执行前,尝试输出了字符串的内容(由于Logcat显示长度受限,只能写入文件)。最终写入文件的大小为273KB。

很多小伙伴可能会比较好奇,文件里的内容究竟长什么样呢?下面是脱敏后的字符串样例。截取了一部分。

json 复制代码
{
  "param": {
    "isSuccessful": true,
    "appSettingsJson": {
      "status": 1,
      "app_id": "ca-app-pub-3940256099942544~3347511713",
      "auto_collect_location": false,
      "initializer_settings": {
        "config": {
          "com.google.ads.mediation.admob.AdMobAdapter": {
            "data": [
              {"format": "interstitial"},
              {"format": "banner"},
            //省略若干行............................
              {"format": "banner"},
              {"format": "interstitial"},
              {"format": "rewarded"},
              {"format": "interstitial"},
              {"format": "native"}
            ]
          },
          "com.google.ads.mediation.applovin.AppLovinMediationAdapter": {
            "data": [
              {
                "format": "interstitial",
                "data": {
                  "sdkKey": "nR5tzXVaLE7HJipKAA_kvMFqRd-eyJt3ZDQYMcLnwqVRg9PP9kuRR2tkkh83rY7WMe9LFK4_6ydRpXTxWS83-x"
                }
              },
              {
                "format": "interstitial",
                "data": {
                  "sdkKey": "nR5tzXVaLE7HJipKAA_kvMFqRd-eyJt3ZDQYMcLnwqVRg9PP9kuRR2tkkh83rY7WMe9LFK4_6ydRpXTxWS83-x"
                }
              },
              {
                "format": "interstitial",
                "data": {
                  "sdkKey": "nR5tzXVaLE7HJipKAA_kvMFqRd-eyJt3ZDQYMcLnwqVRg9PP9kuRR2tkkh83rY7WMe9LFK4_6ydRpXTxWS83-x"
                }
              }
            ]
          },
          "com.google.ads.mediation.inmobi.InMobiMediationAdapter": {
            "data": [
              {
                "format": "banner",
                "data": {
                  "accountid": "c92e1f4b8d2a4e60b3d179ad6e8c5f7a",
                  "placementid": "19999942638"
                }
              },
              {
              //省略若干行
                "format": "banner",
                "data": {
                  "accountid": "c92e1f4b8d2a4e60b3d179ad6e8c5f7a",
                  "placementid": "199999142509"
                }
              }
              }
            ]
          },
          "com.google.ads.mediation.mintegral.MintegralMediationAdapter": {
            "data": [
              {
                "format": "interstitial",
                "data": {
                  "ad_unit_id": "1234567",
                  "app_id": "123456",
                  "app_key": "a6c1e3dabf2d4a7e8c13f47a9d85b21f",
                  "placement_id": "1234567"
                }
              },
                //省略若干行
              {
                "format": "interstitial",
                "data": {
                  "ad_unit_id": "1234567",
                  "app_id": "123456",
                  "app_key": "a6c1e3dabf2d4a7e8c13f47a9d85b21f",
                  "placement_id": "1234567"
                }
              }
            ]
          },
          "com.google.ads.mediation.pangle.PangleMediationAdapter": {
            "data": [
              {
                "format": "banner",
                "data": {
                  "appid": "1234567",
                  "placementid": "123456789"
                }
              }
          }
        }

从内容我们知道,这是我们在Admob后台配置的广告ID,以及聚合的第三方广告平台的广告信息。由于项目历史悠久,长久以来产品同学配置的广告ID,仅Admob一家就有约500个。算上聚合的其他平台,数量就更多了。后续,我们将和产品同学一起,优化相关的配置,提升用户体验。

相关推荐
梦终剧14 小时前
【Android之路】.sp和界面层次结构
android
2501_9160088914 小时前
iOS 26 软件性能测试全流程,启动渲染资源压力对比与优化策略
android·macos·ios·小程序·uni-app·cocoa·iphone
zh_xuan15 小时前
Android Handler源码阅读
android
雪饼android之路15 小时前
【Android】 android suspend/resume总结(3)
android·linux
00后程序员张15 小时前
iOS 26 兼容测试实战,机型兼容、SwiftUI 兼容性改动
android·ios·小程序·uni-app·swiftui·cocoa·iphone
molong93116 小时前
Android 应用配置跳转微信小程序
android·微信小程序·小程序
2501_9151063216 小时前
iOS 可分发是已经上架了吗?深入解析应用分发状态、ipa 文件上传、TestFlight 测试与 App Store 审核流程
android·ios·小程序·https·uni-app·iphone·webview
安东尼肉店1 天前
Android compose屏幕适配终极解决方案
android
2501_916007471 天前
HTTPS 抓包乱码怎么办?原因剖析、排查步骤与实战工具对策(HTTPS 抓包乱码、gzipbrotli、TLS 解密、iOS 抓包)
android·ios·小程序·https·uni-app·iphone·webview
feiyangqingyun1 天前
基于Qt和FFmpeg的安卓监控模拟器/手机摄像头模拟成onvif和28181设备
android·qt·ffmpeg