Android O 让安装应用更安全

2017-09-01 Google Play 谷歌开发者 谷歌开发者


部分观察仔细的用户会注意到 Android O 的一个新特性:“允许未知来源” 的设置已经消失不见。要知道,这是在此前的 Android 版本中,安装 Google Play 或是其他认证商店之外的应用所必经的设置。本文就围绕新的未知来源应用安装许可,以及它为用户以及开发者所带来的益处展开。


前段时间我们发布了 Google Play 保护机制 (Google Play Protect),它能够全面且实时地保护您的设备。不同于第三方来源软件中会携带有潜在有害应用 (PHAs) ,Google Play 仍然是目前最安全的应用来源地。


潜在有害应用开发者的常见套路,是通过恶意下载器 (hostile downloader) 来加载他们的应用。试举一例,某个游戏应用中或许并不包含恶意代码,但它会将潜在有害应用伪装为一项重要升级,继而安装到用户的设备之上 (更多关于恶意下载器的信息请查阅 2016 年 Android 安全性总览) 。用户只要允许了未知来源应用安装,就很容易让这样狡诈的手段得逞。


△ 左 (预览版 Android O) :潜在有害应用伪装为系统升级的安装界面;右 (Android O) :潜在有害应用安装前,首先需要用户允许该 App 进行安装


在 Android O 系统下,安装未知来源应用许可会使得该操作的安全性更高。就像其他的运行时权限 (runtime permissions) 一样,该项许可与触发安装的 App 绑定。确保在弹出安装页面之前,先让用户确认安装权限。在安装了 Android O 或更高版本系统的设备上,恶意下载器就无法在用户获得提示之前,诱导用户进行安装。


新的许可机制能够为用户提供透明化,可控且线性的可信任来源安装许可。在设置中,用户能够看到已经允许安装未知来源 App 的应用列表。用户也可按照自身需求,随时撤回某个应用的许可。


△ 随时都能够查看已允许安装未知来源 App 的应用列表。如需让获取许可更具效率,开发者可在安装过程中,直接让用户跳转至许可界面。



开发者层面的变动

如要利用这一新的许可机制,通过包安装器 (Package Installer) 下载以及安装其他 App 的应用开发者们需要作出一些变动。如果应用在使用 26 或更高级别的 targetSdkLevel 来引导用户安装其他 App,那么清单文件则需要包括 REQUEST_INSTALL_PACKAGES 许可:


<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />


没有声明此项许可的应用无法安装其他 App。对于无 App 安装需求的应用来说,这是一种非常方便的安保办法。开发者可以通过 ACTION_MANAGE_UNKNOWN_APP_SOURCES 意图动作 (Intent action),让用户直接跳转到安装 未知来源应用 (Install unknown apps) 的界面。也可以通过使用包管理器 (PackageManager) canRequestPackageInstalls ( ) API,查询安装许可的状态。


请记住,如果这些 App 已在 Google Play 上发布,而且能够安装和更新其他应用,那么 Google Play 政策法规 仍然适用。绝大多数情况下,这种行为并不恰当;相反,您应该在 Google Play Store 的应用列表中提供一个深层链接 (deep-link)。


请确保已经了解更多有关安装未知来源应用的发布指南,并关注与 Android O 安全性相关的更多公告。



推荐阅读:

Android 8.0 Oreo 画中画模式

Android 8.0 Oreo 现已推出!

Android O 迁移应用官方指南

Android O 行为变更官方指南

全新 Android 构建组件到底有多好用?