持续提高 Android 应用的安全性与性能

487


每年,Google Play 助力数十亿的 App 进行安装或者更新。我们一直致力于提升 App 安全性和性能,确保每个用户都能够获取最佳体验,探索和安装自己喜欢的 App 和游戏。

今天,我们想要和各位 Android 开发者简单说明一下三项变更,它们背后的原因,以及它们如何让 Android 设备运行得更加安全和流畅。

  • 从 2018 下半年开始,Google Play 要求新 App 和 App 更新包将目标 SDK 版本(Target SDK Version)设定为最新版。针对新发布 App,此项变更将从 2018 年 8 月实施;针对现有 App 的版本更新,此项变更则从 2018 年 11 月生效。开发者们要留心此时间,确保 App 基于最新 API 进行开发,获得安全性和性能方面的优化。

  • 2019 年 8 月开始,Google Play 要求用原生库(native libraries)进行发布和更新的 App 都必须提供 64 位和 32 位两个版本。

  • 此外,从 2018 年上半年开始,Google Play 将在每个 APK 头部添加少量安全元数据,用于进一步验证 App 的真实性。此项变更不需要开发者方面采取任何行动。

我们十分重视开发者生态圈,希望这篇文章能够帮助各位顺利发布 App。而且我们会继续发布提醒通知,分享开发者资源帮助各位在关键日期节点前做好充分准备。

从 2018 年下半年开始, API 目标等级新规定

API 行为变更能够提高 Android 安全性和隐私保护 —— 助力开发者提高 App 安全性、防止用户遭受恶意软件攻击。以下列举了我们针对近期平台版本,推出的几项有关 API 的变更:

  • 不再支持通过隐式的 intent 调用 bindService ( ) (Android 5.0)

  • 在运行时请求权限 (Android 6.0)

  • 默认条件下,不再信任用户为安全连接添加的 CA 证书 (Android 7.0)

  • 在未获得用户明确批准的情形下,App 无法访问用户账号 (Android 8.0)


上列变更仅仅适用于在 targetSdkVersion 清单属性中明确表明支持新 API 行为的 App。例如,只有在 targetSdkVersion 值为 23(Android 6.0 适配 API 等级)或者更高的 App 内,用户才能通过设定 “在运行时请求权限”,完全控制 App 能够访问到哪些隐私数据 —— 如联系人和位置信息。

同样地,近期发布的几个版本还改善了用户体验,如防止 App 突然过度消耗电池和内存等资源,后台执行限制就是一个很好的例子。

为了让用户能享受到最好的 Android 体验,Google Play 管理中心将要求 App 设定目标 API 等级为近期版本:

  • 2018 年 8 月:新 App 需要将 target API 等级设定为 26(Android 8.0)或者更高

  • 2018 年 11 月,现有 App 的更新包需要将 target API 等级设定为 26 或者更高

  • 2019 年之后:每年 targetSdkVersion 会提出新的要求。Android 新版本系统发布一年内,App 的开发和更新都需要将 API 调整到相应或者更高等级。

现有但不再更新的 App 并不受影响。开发者可以自行选择是否使用 minSdkVersion,依旧可以进行基于旧版本 Android 系统的 App 开发。

我们建议各位开发者尽量提供向后兼容性。今后的 Android 系统会对未达到 API 要求而在安全和性能方面有所欠缺的 App 设置限制。我们将会采取积极主动的措施,降低 App 生态圈碎片化程度,保证 App 运行安全而且流畅。我们会提前通知开发者,让各位能够做好相应计划。

今年我们正式发布 Android Oreo。在安全和性能方面,Oreo 是目前最好的一款 Android 系统。同时我们还发布了 Project Treble 计划,加速设备上的系统更新速度。请立即开始为 Android 8.1 Oreo 开发 App。

2019 年开始要求提供 64 位支持

从 Android 5.0 开始,Android 平台就加入了 64 位架构支持。到目前为止,40% 的 Android 设备都支持 64 位版本,同时兼容 32 位版本。一般来说,如果 App 用的是原生库,那么 64 位代码通常能提供显著更好的性能,因为该架构支持更多的寄存器数量和更新的指令集。

预期未来 Android 设备可能只提供 64 位代码支持,Google Play 管理中心要求新 App 以及 App 更新包在无 32 位支持的设备上也能运行。使用 32 位库的 App 需要同时兼容 64 位库 —— 发布时可以打包在同一个 APK 内,也可以作为多 APK 中的一个。不包含原生代码的 App 不受此要求影响。

以上变更将在 2019 年 8 月起正式生效。此次预先通知是为了让广大开发者能够有充足的时间为支持 64 位代码做好准备。我们随后会推出一系列相关文章内容,深度探讨 64 位原生库为 Android 带来哪些性能优化,敬请期待。欲知更多信息,请查阅 Android NDK CPU 和构造指南:

https://developer.android.google.cn/ndk/guides/arch.html

2018 上半年开始采用安全元数据

从明年开始,我们将会在每个 APK 顶部添加少数安全元数据,用来认证 App 是通过 Google Play 官方发布的。比如说您去买东西,上面印着的商标就用于确定商品真伪。而我们往 APK 添加的元数据也是起这样的作用,告诉用户这个 App 是由 “Google Play” 官方下载的。

该项变更不需要开发者或者用户方面采取任何措施。我们将会根据添加的元数据大小,调整 Google Play 中 APK 体积的上限值,并添加到 APK 签名区块中(APK Signing Block),而对 App 的功能没有任何影响。这些元数据不仅能够增强 Google Play 移动 App 生态系统的完整性,还能为开发者带来新的发布机会,帮助更多的用户享用最新 App。

展望未来

2017 年对 Google Play 而言是意义非凡的一年,我们共同见证了许许多多开发者的成长和成功。我们一直努力改善各项功能(包括先前在 Google I/O 2017 开发者大会Playtime 大会上提出的功能),助力开发者提高 App 质量,创造更多商业价值。

我们希望通过这些功能和即将发布的更新,在 2018 年及以后助力 Android 和 Google Play 生态系统继续蓬勃发展。