在使用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个。算上聚合的其他平台,数量就更多了。后续,我们将和产品同学一起,优化相关的配置,提升用户体验。