「应用未安装」的排查路径:从签名查到存储
为什么这个提示最讨厌
「应用未安装」不告诉你原因,只告诉你结果。它可能对应十几种底层失败,本页只按命中概率排一条排查路径——前两步都和签名有关,这也是 apk-signer 能直接帮上忙的部分。
第一步:验签名
先确认包的签名状态,排除两类签名问题:
- 签名无效/缺失:对应INSTALL_PARSE_FAILED_NO_CERTIFICATES的排查清单。
- 与已装应用冲突:对应INSTALL_FAILED_UPDATE_INCOMPATIBLE——这一类尤其常见,重签包覆盖原装包必然报错。
两步验证操作见验证 APK 文件。
第二步:查包完整性
传输损坏的包装不上也不给明确理由。核对文件体积是否与来源标注一致;差得远就换渠道重下。分包容器文件同理,见安装 split-apks的前提条件。
第三步:查存储与残留
- 手机存储不足,安装器会静默失败——清理后重试。
- 旧版本卸载残留(多见于反复装卸测试包的场景)——彻底卸载旧包再装。
第四步:查版本兼容
- 包要求的安卓版本高于你的系统(apk-signer 自身支持范围可参考下载安装的说明,目标包的兼容性看它的 minSdk 要求)。
- 架构不匹配:包里没有你设备 CPU 架构的库,多见于只含 64 位库的包装上 32 位老机。
还不行
把包换一台设备试装:能装,问题在你这台设备;不能装,问题在包。这个二分法能立刻把排查范围砍掉一半。之后无论结论是哪边,签名方案组合的覆盖面问题都值得复查一遍——老设备缺 v1 签名是"新签的包装老机器失败"的高发原因。