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

每年,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 生态系统继续蓬勃发展。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

浅谈VPC二三,秒懂秒透

VPC全称是Virtual Private Cloud,翻译成中文是虚拟私有云。但是在有些场合也被翻译成私有网络或者专有网络等。这里其实就有些让人迷惑,VPC究...

94770
来自专栏携程技术中心

【QCon分享】携程无线App自动化测试实践

背景 近年来,携程的业务急剧增长如2015年第一季度交通票务预订量同比增长104%,而在携程所有的业务中约70%来自于无线,App累计下载量超过7亿(截至201...

259100
来自专栏云计算

使用Apprenda和R分析应用程序工作负载数据

在权限范围内运行的访客应用程序的知识是平台即服务(PaaS)可以利用的最重要的数据来源之一。一个PaaS应该知道(译注:原文为know,此处应指可以获取并处理)...

23760
来自专栏技术翻译

如何构建可扩展的应用程序

所以你有一个很棒的主意。而且你有来自大学的朋友可以帮助你开始构建你的应用程序。您也可以从早期采用者那里获得很好的反馈。所以你做任何人都会做的事。启动你的应用!

21320
来自专栏ThoughtWorks

系统级集成测试的断舍离|洞见

食之无味,弃之可惜 在企业级应用的“季度或月度发布”被认为是领域最佳实践的时候,在应用部署到生产环境之前维护一个完整的环境来进行集成测试是非常必要的。但是,集成...

30190
来自专栏JAVA高级架构

深入浅出 RPC - 浅出篇

近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 RPC 在其中扮演着关键的作用。在平时的日常开发中我们都在隐式或显式的使用 RPC,...

15330
来自专栏罗超频道

Chrome支持Android应用,浏览器正在成为操作系统?

Google 日前已决定将ARC开放给所有开发者,并且ARC在Chrome OS和Chrome浏览器中均可以运行。ARC全称是App Runtime for C...

33940
来自专栏Linyb极客之路

初识分布式架构

集群 小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。

12710
来自专栏云计算D1net

云端虚拟机故障切换遭遇的重重挑战

故障切换到远程站点是一项成熟的技术,云存储也是一项成熟的技术。但是如果用户们在遇到故障后想把虚拟环境切换到云端,他们就面临独特的挑战。 虽然这两个过程都用到复制...

33680
来自专栏开源项目

码云团队如何使用码云?

22140

扫码关注云+社区

领取腾讯云代金券