由于工作需要,最近浅浅分析了一下小米应用商店下载应用的逻辑,发现一些有趣的地方,因此记录一下。
测试环境
小米8(Root)、应用商店_4.97.0、reqable
抓包下载应用请求
需要先安装好reqable CA证书,具体可以参考安装证书 | Reqable · API抓包调试 + API测试一站式工具。
推荐大家都试一下reqable,它是小黄鸟(HttpCanary)的进化版,支持电脑分析手机流量,且能够以应用程序为单位筛选流量信息,比如我只关心“应用商店“的流量,就可以筛选“应用商店”。
比如我要下载小红书APP,点击下载,回到Reqable分析后发现如下请求与下载行为。

image-20250627143021-ag7m23e.png (194.57 KB, 下载次数: 0)
下载附件
2025-6-27 14:55 上传
在响应体中返回了apk的下载地址信息(由字段url和host组成),经测试,访问https://pfga-accelerate.market.xiaomi.com/download/AppStore/0c72ebbf503244d939c7691ffd9e7329b0450b038 确实可以直接下载小红书。
{
"apkSize": 131785961,
"apkSizeV2": 131785961,
"apks": [
{
"module": "main",
"type": "standalone",
"url": "AppStore/0c72ebbf503244d939c7691ffd9e7329b0450b038",
"hash": "ef9aa32156929dc0a2056be96ea6b4ef",
"size": 131785961,
"diffSize": 0,
"compressSize": 0
}
],
"obb": [],
"dms": [],
"thumbnail": "https://sf0.market.xiaomi.com/thumbnail/",
"fitness": 0,
"id": 69661,
"releaseKeyHash": "d72f9c996b008aa6a26878fb01253008",
"channelApkId": -1,
"refPosition": -1,
"icon": "AppStore/03afa156710c048c989bbe98e74671d50277854df",
"unfitnessType": 0,
"filterCode": 0,
"versionCode": 8890813,
"downloadCtl": 0,
"bspatchVersion": 2,
"patchConfig": {
"threadCount": 3
},
"compressType": 1,
"compressLevel": "",
"packageName": "com.xingin.xhs",
"versionName": "8.89.0",
"downloadExtraParams": "{\"useKcgEngine\":false}",
"ext_apm_extraParamsSid": "default",
"hosts": [
"https://pfga-accelerate.market.xiaomi.com/download/",
"https://fgc0.market.xiaomi.com/download/"
],
"useSelfEngine": false,
"useCrashEscape": false,
"useSpeedInstallV2": false,
"isSystemApp": false,
"showDeskDynamicIcon": false,
"traceId": "71bc2994166c4f02bce5290524697502",
"validateManifest": false,
"downloadSource": "icon",
"failOverRules": [
{
"errCode": 152,
"engineCode": 1
},
{
"errCode": 151,
"engineCode": 1
},
{
"errCode": 111136,
"engineCode": 1
},
{
"errCode": 111176,
"engineCode": 1
},
{
"errCode": 150,
"engineCode": 1
},
{
"errCode": 111128,
"engineCode": 1
}
],
"host": "https://pfga-accelerate.market.xiaomi.com/download/",
"totalDownloadSize": 131785961,
"exp_id": "1901245,1628665,1851678,1890590,1894878,1805848,1894873,1623262,1846069,1835477,1827793,1887479,1700402,1411227,1689163,1627499,1900104,1812259,1384460,1891782,1497480,1695910",
"useExpId": "1628665,1700402,1497480,1695910"
}
但是后续的请求中并没有发现对pfga-accelerate.market.xiaomi.com的请求,手机又完成了小红书的安装,这是为什么?
观察响应体的字段信息, 有如下发现
"useSelfEngine": false, "useSpeedInstallV2": false表明使用了系统级的下载服务,而不是HTTP应用内的下载,"patchConfig": {"threadCount": 3}表明使用了多线程下载配置
综上表明,下载请求不由小米应用商店发出,可能委托给了其他应用。继续分析请求发现,实际下载请求由一个叫MTP本机的应用发出。

image-20250627143321-t3w3vc3.png (85.75 KB, 下载次数: 0)
下载附件
2025-6-27 14:55 上传
MTP本机是一个什么应用?MTP = Media Transfer Protocol(媒体传输协议)是一个由微软开发的协议,用于在不同设备之间传输媒体文件和其他数据。说起来我们并不陌生,使用USB线连接电脑与手机,使用文件传输时就是使用的MTP协议。
小米应用商店为什么委托MTP下载应用?因为MTP是一个系统级应用,可以提高下载的稳定性和效率,利用系统级的文件管理能力,这样用户体验也会更好。
MTP里的代码逻辑就没有分析了,主要梳理小米应用商店的下载过程是由哪些应用参与的。