如何在 Google Play 之外安全安装 APK

对于因商店规则无法上架 Google Play 的程序,通过 APK 文件安装应用是常见做法。风险不在于安装方式本身,而在于文件很容易在传输途中被替换。下面看看如何进行校验,以及为什么应用签名比看上去更重要。

  1. 只从开发者网站下载文件

    APK 下载站常常提供重新打包的文件,里面内置广告,甚至更糟。官方下载页面会公布文件大小、版本和校验和,而下载站通常没有这些信息。

    网站下载页面:版本、文件大小以及用于校验的 SHA256 校验和
  2. 核对 SHA256 校验和

    下载页面列出了文件的 SHA256 哈希值。用任何具备此功能的文件管理器计算下载的 APK 的哈希值,并比对两串字符。一致说明文件与发布时完全相同;不一致就不要安装,请重新下载。

    核对校验和:下载文件的哈希值与网站公布的一致
  3. 允许从此来源安装

    打开下载的文件,Android 会显示警告并提示前往设置。开启“允许来自此来源的应用”。该权限授予的是某个具体的来源应用(浏览器或文件管理器),而不是整个系统。

    Android 设置:已为浏览器开启“允许来自此来源的应用”
  4. 安装应用

    返回并确认安装。对于商店之外的任何 APK,Android 都会显示来自未知来源的应用可能有害的警告,这并不是对这个文件的检查结果。

    Mock Location 的系统安装对话框,带有“安装”和“取消”按钮
  5. 不再需要时撤销权限

    安装完成后,可以在同一位置、来源应用的设置中关闭来源安装权限。这不影响以后的更新:带自动更新功能的应用会单独、明确地再次请求该权限。

    安装应用后已关闭来源安装权限

为什么应用签名很重要

每个 APK 都用开发者的密钥签名。Android 在安装时检查签名,不允许把用其他密钥签名的文件覆盖安装到已安装的应用上,这样的尝试会以更新不兼容的错误告终。

这既是一种保护,也带来一个实际限制:商店版和网站版用不同的密钥签名,因此不卸载应用就无法互相替换。如果您已登录,数据不会丢失:地点和历史会通过同步恢复。

为什么更新不会清除数据

在旧版本上安装新版本属于更新,而不是重装:系统会保留应用的存储。本地地点、历史、设置和账号登录状态都会保留,正在进行的模拟位置也会自动恢复。

只有完全卸载应用时才会丢失数据,而且只丢失本地数据:与账号同步的内容在登录后都会恢复。

Play Protect 警告意味着什么

在商店之外安装任何应用时,Play Protect 都可能显示警告,即使是完全无害的应用。这是一种启发式判断,部分依据就是应用在 Google Play 之外分发,而不是对某个文件的结论。

您这边真正有意义的检查,是将校验和与官方下载页面上公布的进行比对:它回答的是“这是不是正确的文件”,而不是“商店的启发式规则是否认可它”。

Mock Location — 免 root 的 Android 虚拟定位

免费,不经 Google Play 分发。安装前可以核对文件校验和。

下载 APK