你的 Android 应用为 Autofill 做好准备了吗?

从 Oreo 系统开始,自动填充(Autofill)功能使得用户在应用内填写信用卡、登录、地址和其他信息变得非常方便。 现在应用中的表单也可以被自动填充,用户不需要再记住复杂的密码或多次输入相同的信息。

用户可以选择多种自动填充服务。 默认使用的是 Google 自动填充(Autofill with Google)功能,但用户也可以选择他们喜欢的任何第三方自动填充应用。 用户可以在设置 -> 系统 ->语言 -> 高级 -> 自动填充服务中进行管理。

目前有什么可用的

目前,Google 自动填充支持提交信用卡、地址、登录名、姓名和电话号码。 当首次登录或创建帐户时,自动填充功能也允许用户将新的凭据保存到帐户。 如果你在你的应用中使用 WebViews,那么许多应用都可以在登录或者其他屏幕上使用自动填充功能,而且只要用户安装了 Chrome 61 或更高版本,那么你的用户现在也可以享受到自动填充功能带来的便利。

自动填充 API 面向任何人开放以实现自动填充服务。 Google 也正积极的与 1Password、DashlaneKeeperLastPass 展开合作,帮助他们实现在 Android 上的认证。 Google 将验证密码管理并将他们添加到 Play 应用市场,并作为 Play 应用市场中的一部分,其中设置里的“添加服务”按钮将链接到该部分。 如果你是密码管理员并且想要获得认证,那么请与 Google 联系

作为一名开发者你需要做些什么

作为一名应用开发者,你应用想要集成这个新功能仅仅需要做一些很简单的事情就可以了:

测试你的应用并在需要的时候注释说明你的视图

在很多情况下,在你的应用中实现自动填充功能可能不需要做任何额外的工作。 但为了确保一致的行为,Google 建议我们提供明确的提示,告诉框架自动填充的内容有关的字段。 你可以使用 android:autofillHints 属性或 setAutofillHints() 方法执行此操作。

同样,在你的应用中使用 WebViews,你也可以使用 HTML 的自动完成属性来提供相关字段的提示。 只要设备上安装了 Chrome 61 或更高版本,自动填充功能就可以在 WebView 中使用。 即使你的应用使用自定义视图,也可以定义允许自动填充功能工作的元数据

对于自动填充没有意义的视图(例如验证码或消息输入框),你可以显式地将视图标记为IMPORTANT_FOR_AUTOFILL_NO(或视图层次结构的根目录中的IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS)。要谨慎的使用这个字段,并且记住,用户总是可以通过长按 EditText 并在弹出的下拉菜单中选择“自动填充”来绕过它。

加入你的网站和移动应用

使用 Google 自动填充可以在网站和移动应用上无缝的共享登录信息 – 通过 Chrome 保存的密码也可以提供给本地应用。 但为了实现这个目标,作为应用开发人员,你必须明确声明你的网站与移动应用之间的关联。 这涉及2个步骤:

步骤1:在 yourdomain.com/.well-known/assetlinks.json 中托管一个 JSON 文件

如果你以前使用过 App Links 或 Google Smart Lock 等技术,则可能听说过数字资产链接(Digital Asset Links)文件。 这是一个放置在你的网站上一个众所周知的位置的可以公开访问的、可验证的关于其他应用或网站的声明的 JSON 文件。

你应该按照 Smart Lock for Passwords 指南获取有关如何在服务器上正确创建和托管 DAL 文件的信息。 即使 Smart Lock 是让用户登入你的应用的更高级的方式,我们的自动填充服务也使用相同的基础结构来验证应用网站关联。 而且,由于 DAL 文件是公开的,因此第三方自动填充服务的开发人员也可以使用关联信息来保护他们的实现。

第2步:用相同的信息更新你的应用的清单

再次按照 Smart Lock for Passwords 指南中的 “在 Android 应用中声明关联” 这一步骤再进行一边。

你需要使用 asset_statements 资源来更新应用的清单文件,该资源链接到你的 assetlinks.json 文件所在的 URL。 完成之后,你需要将更新后的应用提交到 Play 应用应用应用市场,并填写联盟提交表单,以便联系人上线。

当使用 Android Studio 3.0 时,App Links 助手可以帮你生成以上所有的内容。 当你打开 DAL 生成器工具(工具 ->应用链接助理 ->打开数字资产链接文件生成器)时,只需确保启用标记为“在应用和网站之间支持共享凭据”的复选框。如下图:

然后,点击“生成数字资产链接文件”,并将预览内容复制到你的服务器和你的应用托管的 DAL 文件。 请记得确保所选的域名和证书是否正确。

未来的工作

Android 中的自动填充功能还处于早期阶段。无论你是使用 Autofill with Google 还是第三方密码管理器,Android 开发团队仍在继续加大这方面的开发工作以改善用户体验。

Android 开发团队将会在以下几个方面加大开发工作:

1.Google 自动填充:Android 开发团队希望提供一个很棒的体验,所以他们将使所有的 Oreo 设备中都包含 Google 自动填充功能。并不断的改进使用场景的检测和数据质量,从而扩大可以保存更多的数据类型。
2.WebView 支持:在 Chrome 61 版本中引入了可以在 WebViews 中进行自动填充的初始支持,随着时间的推移,还需要继续测试,以加强和改进此功能,所以如果你的应用使用了  WebView,那么你仍然可以享受到这个功能带来的便利。
3.对第三方应用的支持:Android 开发团队正在与生态系统合作,确保应用按照自动填充框架的要求工作。Android 开发团队也会督促开发者将他们的应用适配到 Android Oreo 系统,确保在启用自动填充的情况下应用能够按照预期工作。更多相关信息,请查看自动填充框架的完整文档

如果你遇到任何问题或者更好的建议,请给反馈给 Android 开发团队

编译:谷创字幕组    原文:Android Developers Blog 配图:Android Developers Blog

Google 开发技术周刊 090 期

近期在 Google Assistant 上发布了一系列新特性,使得用户能够更加便捷地找到你的应用,进行交互操作以及提高用户粘度。

链接: Help users find, interact & re-engage with your app on the Google Assistant


就在今年的 9 月,Google 同 Hackster.io 一起举办了 Android Things 开发者挑战赛,该大赛旨在鼓励大家使用 Android Things 开发智能的互联的设备,并且在大赛中发布自己的项目。现在获奖名单已经产生,大家可以点击下面链接,查询具体名单。

链接:Android Things Contest Winners


TensorFlow Lite 的开发者预览版已经可以使用了,它是 TensorFlow 针对移动平台和嵌入式设备所推出的轻量级版本,可以用于一些低延时的直接运行在终端设备的机器学习模型。

链接:Announcing TensorFlow LiteGoogle发布了Tensorflow Lite,用于移动电话的神经网络库


在 Tensorflow Lite 中还包含了可运行在终端设备上的对话模型,其中还有一个 demo 程序,该程序展示了如何使用 TensorFlow Lite 实现自然语言处理相关的应用。

链接:On-Device Conversational Modeling with TensorFlow LiteGoogle Developers:发布TensorFlow Lite


SLING 是一个用于将自然语言文本转化为与其含义相关的语义框架图的实验系统。所生成的语义框架图可以直接为用户提取语义中的关键点。

链接:SLING: A Natural Language Frame Semantic ParserGoogle 發表自然語言處理解析器 SLING,免除模組化分析級聯效應產生的缺陷


DialogFlow 企业版已经发布了 beta 版本,它扩展了 DialogFlow 的所有优点。可以提供更高的灵活性和更好的支持,以满足大规模企业的需求,我们还发布了 DialogFlow 内置的语音模块,可以帮助大家开发功能丰富的基于语音的应用。

链接:Introducing Dialogflow Enterprise Edition, a new way to build voice and text conversational apps


Cloud Spanner 已经可以使用多地区配置了。在这个发行版本中,我们扩展了 Cloud Spanner 在不同地区和大洲之间的交易功能和同步数据复制功能。也就是说无论你的用户在哪个国家,只要是基于 Cloud Spanner 的应用都可以在全球范围内读取或者写入最新的数据。并且对于终端用户来说,这个操作的延迟非常小。

链接:With Multi-Region support in Cloud Spanner, have your cake and eat it too


Container-diff 是一个用于快速比较容器图片的工具,现在已经开源。下面链接中有 GitHub 资源。

链接:Introducing container-diff, a tool for quickly comparing container images


Firebase Cloud Messaging 是一个跨平台的消息发送解决方案。可以免费发送信息数据,它每天发送大约四千亿条信息。最近我们发布了新的 RESTful API,即 Firebase Cloud Messaging HTTP v1 API。它使得跨平台应用的消息发送变得更加安全和便捷。

链接:What’s new with FCM? Customizing messages across platforms!


Google 成立了 Google Developers Launchpad 非洲分部。这是 Google 为非洲当地的创业项目量身打造的崭新的孵化器。申请日期截止到美国西部时间 12 月 11 日 上午 9 点。而第一期项目将会在 2018 年初启动。

链接:Launchpad comes to Africa to support tech startups! Apply to join the first accelerator class


以上是本期 Google 开发技术周刊的主要内容。

Yuan@GDSub Team

Google 开发技术周刊 088 期

Resonance Audio 已经于近期发布,它是一款新的空间音频开发套件。它内部的技术源于 Google VR Audio SDK。
详情:Resonance Audio: Multi-platform spatial audio at scale谷歌发行跨平台空间音频SDK Resonance Audio

Fast Pair 功能已经发布,通过Fast Pair 可以很方便地把蓝牙设备和兼容的 Android 设备进行配对,下面文章中可以了解更多相关内容。
详情:Announcing Fast Pair – effortless Bluetooth pairing for AndroidAndroid 的 Fast Pair 标准支持与蓝牙设备快速配对

在 Cloud SQL for PostgreSQL 中新增了高可靠性和只读数据的支持。
详情:Cloud SQL for PostgreSQL adds high availability and replication

印度的第一个 Google Cloud 平台已经开放,当地用户访问该节点的延迟要比访问其它节点有显著提高。
详情:GCP arrives in India with launch of Mumbai region

Google 为 TensorFlow 增加了 Eager Execution,它是一个命令式的,由运行定义的接口。它可以使研究过程和开发变得更加直观。
详情:Eager Execution: An imperative, define-by-run interface to TensorFlow终于!TensorFlow引入了动态图机制Eager Execution

Firebase Predictions 已经发布,大家可以基于行为预测构建动态用户群组,该行为预测使用机器学习模型实现。
详情:Announcing Firebase Predictions Beta

以上是本期 Google 开发技术周刊的主要内容。

Yuan@GDSub Team

Google 开发技术周刊 087 期

Android 8.1 开发者预览版已发布,该版本针对 Android Go 做了相应的优化,并且包含了一个新的的API 用于提高设备人工智能运算方面的性能。
链接: Android 8.1 Developer Preview

Android Studio 3.0 已经正式发布,该版本作为大的版本更新,很大程度上加速了 Android 应用程序的开发速度。

链接:Android Studio 3.0

Go 1.8 版本对于依赖库、运行时、性能和安全方面都做了相应的优化,现在该版本已经可以在标准的 Google App Engine 环境下使用了。

链接:Announcing Go 1.8 on App Engine Standard Environment

现在可以将 Gmail 功能通过开发插件的方式嵌入到自己的应用程序中了。

链接:Gmail add-ons framework now available to all developers

Chrome 63 beta 版本已经发布,其中包含动态模块引用,异步遍历器和生成器,设备内存 API 以及权限相关 UI 的修改。

链接:Chrome 63 Beta: Dynamic module imports, async iterators and generators, Device Memory API, and permissions UI changes

Google Cloud Platform 播客终于发布了第一百期,祝贺 Francesc 和 Mark 以及播客的整个团队。

链接:GCP Podcast hits 100 episodes — here are the 10 most popular episodes

在 Build Out 特辑视频中,Colt 和 Reto 一起为大家展示了通过竞争系统架构设计实现智能花园。整个过程都使用到 Task API。

链接:Who Can Build a Smarter Smart Garden? – Build Out #1

以上是本期 Google 开发技术周刊的主要内容。

Yuan@GDSub Team

Google 发布了 I/O 大会 App 的最新源代码

近日 Google 放出了 Google I / O 2017 的官方 Android 应用的源代码

今年这个应用对现有功能做了很大的修改,并且也添加了几个新功能。它也探索了使用 Firebase 的技术栈。在这篇文章中,我们将突出展示应用的几个显著变化及其设计注意事项。

2017 年最突出的新功能是活动预订系统,其旨在帮助去现场参加活动者节省时间,并提供流畅的的参会体验。活动注册者可以在活动开始之前和活动期间保留活动并加入候补名单;另外预订系统也提供了快速进入会议而无需长时间等待。预约数据与参加者的会议参会证同步,允许参会人员使用支持 NFC 的手机验证预约。不仅预订功能非常受欢迎,而且预订数据帮助活动组织人员在 I / O 之前预估会议室的大小,以适应实际的座位需求。

预约功能使用 Firebase 实时数据库(RTDB)和 Cloud Functions 实现。 RTDB 在用户设备之间提供了非常方便的同步功能 – 只需要在代码中实现一个监听器来接收数据库更新就可以了。 RTDB 还提供开箱即用的离线支持,即使在旅行期间间歇性网络连接时也允许会议数据可用。云功能在后台处理用户的预约请求,使用事务来确保状态的正确性(防止恶意用户抢占太多的座位!)并与活动证件系统进行通信。

像往年一样,这个应用使用 ContentProvider 作为所有应用数据的抽象层,这意味着必须弄清楚如何将 RTDB 数据与 ContentProvider 整合在一起。因此需要在两个本地数据缓存之间进行协商:1.通过 ContentProvider 访问的本地 SQLite 数据库;2.由 RTDB 创建的本地缓存以便于无网络时的访问。所以决定将 ContentProvider 中的所有应用数据整合在一起:每当用户在 RTDB 中更改预约数据时,可以通过 ContentProvider 来更新数据,确保应用只有唯一一个数据来源。这意味着只需要在单个屏幕上持有与 RTDB 的开放连接即可,即活动详细信息 Activity,用户可能会在这里管理他们的预约。应用其他部分显示的预约数据由 ContentProvider 提供。在离线模式下或者在与 RTDB 连接不稳定或延迟的情况下,我们可以从 ContentProvider 获取到用户保留的最后一个已知状态。

另外还必须找出将 RTDB 整合到 IOSched 的整体同步逻辑中的良好模式,特别是由于RTDB 具有与我们在应用中使用的 ping-and-fetch 方法使用的同步模型有很大的不同。我们决定继续使用云端点(Cloud Endpoints)的方式来实现跨设备和网络和 iOS 客户端同步用户数据(数据本身存储在数据存储区 (Datastore)中)。虽然 RTDB 提供实时的数据同步,但我们希望确保用户的预约数据在所有设备上都是最新数据,即使应用不在前台。我们使用 Cloud Function 功能将 RTDB 预约数据集成到同步流中:一旦在 RTDB 中更改了用户的预约数据,也会同步更新到云端点,从而触发 Firebase Cloud Messaging 给下游所有用户的设备发送消息,然后调度数据同步。

今年的应用程序还提供了一个 Feed 来向用户介绍 I/O 的活动动态(大多数应用的用户偏远,Feed 是他们获取的活动信息的一个窗口)。 Feed 也由 RTDB 提供支持,数据使用简单的 CMS 推送到服务器。我们使用云函数 (Cloud Function) 功能来监听 RTDB 的 Feed 数据;当在服务器上的 Feed 数据更新时,云函数会向客户端发送一个 Cloud Messaging 消息,从而在用户的 Feed 上展示最新的 Feed 数据。

在 2015 年和 2016 年, IOSched 采用了 MVP 的架构,今年还是这个架构模式,这种架构提供了很好的隔离,便于测试,并且使我们的代码更简介和更易于维护。对于 Feed 功能,受 Android Architecture Blueprints 启发我们决定尝试使用更轻量级的 MVP 实现,它提供必要的模块化,同时也非常容易理解。这样做的目的是教学和实践:我们想为开发者展示一个可替换的 MVP 模式;我们还想展示一种适合我们功能需求的架构。

IOSched 首次大量的使用了 Firebase 远程配置 (Firebase Remote Config) 功能。在过去,在会议之前或会议期间,我们发现当没有会议数据的时候无法通知用户,以及无线上网信息,班车时间表,优惠代码等信息。强制应用更新是不可行的;我们只想让应用内默认值可更新。使用远程配置可以很容易的解决我们遇到的这个问题。

最后,我们以这个三层系统的主要变更信息来结束这篇文章:
会议数据和用户数据的更新通过云消息传递和数据同步(ping和fetch模型)进行通信。
Feed 数据变化通过 RTDB 进行控制。
通过远程配置控制对应用程序内常量的更改。

未来的计划

即使我们发布了 2017 年的代码,我们仍然在未来几个月内提前完成工作。我们将更新代码以遵循现代模式进行后台处理(并使我们的应用兼容 Android O),并且将来我们将采用Android 的架构组件 (Architecture Components) 来简化应用的整体设计。开发者可以按照GitHub 上的代码进行更改。

编译:谷饭 原文:Android Developers Blog 配图:Android Developers Blog

Google 以日食来倒计时 Android O 的发布

Google 在 7 月份的时候发布了 Android O 的最后一个预览版,这个预览版几乎跟正式版没多大差别了,而 Android O 的正式版将在美国时间 8月 21日发布,此次 Android O 的发布日期正好赶上了百年一遇的日全食天文奇观,Google 为此制作了一个日全食主题的倒计时网站。如下图:

由此看来这个发布日期 Google 是蓄谋已久了啊,此前大家都在猜猜 Android O 的版本代号会是那一种甜品呢?是 Oreo、Octopus、Oatmeal Cookie 还是 Orangina呢?日全食什么想必大家都知道,那这是不是在暗示 Android O 的正式版代号是 Oreo 呢?让我们拭目以待吧!

编译:谷饭  配图:Android Official Website

快来体验一下新一代 Dex 编译器吧

Android 应用开发者们都知道 Dex 编译是 Apk 构建过程中是很关键的一步,这个过程是将 .class 的字节码转换为 Android 运行时(Android Runtime)所需 的 .dex 字节码(或用于旧版 Android 的 Dalvik 虚拟机)的过程。 Dex 编译器主要在日常应用程序开发中起作用,但它直接影响到应用程序的构建时间、.dex 文件大小和运行时性能。这也就是 Android 开发团队为什么要在 Dex 编译器上花费大量精力进行重要改进原因。现在新一代 Dex 编译器 D8 已经随着 Android Studio 3.0 测试版一同发布了。


与当前的 Dex 编译器进行比较,D8 编译速度更快,并且最后输出的 .dex 文件也更小了,同时兼具更好的应用程序运行时性能。D8 编译器的相关测试如下图:

Dex 编译时间测试

Dex 文件大小对比:DX vs D8

那么怎么才能使用 D8 编译器呢?D8 编译器已经随着 Android Studio 3.0 测试版一起发布了,要使用 D8 编译器很简单,只需要在项目的 gradle.properties 文件中开启如下设置即可:android.enableD8=true。在未来的几个月内 D8 编译器的预览版会随着 Android Studio 3.0 版一起发布。在这期间 Android 开发团队会中断解决从社区收到的任何错误报告。Android 开发团队计划在 Android Studio 3.1 版本的时候结束 D8 的预览版并将其作为默认的 Dex 编译器,之后 DX 编译器将进入日常维护模式并只修复一些较为严重的 Bug。

除了 D8 编译之外,Android 开发团队也在开发一个名为 R8的 Proguard 的替代品,目前 R8 已经开源但还木有集成进 Android Gradle 插件里,但是已经向社区提供了预览版,再过段时间 Android 开发团队将会公布 R8 的更多详细信息。

而对于工具开发者而言要做好让字节码工具迎接 Java 8 的准备,4月份的时候 Android 开发团队宣布推出解析 Java 8 语言特性语法糖的功能。 这个过程会发生在Java编译(javac)之后,以及任何字节码读取或重写工具之前。 作为 D8 的一部分,在接下来的几个月中,这个过程将被移入整个流程的最后一步执行。 这将使我们能够进一步缩短整体构建时间并生成更优化的代码。 这种改变意味着任何字节码读取或重写工具都将在最后一步之前执行解析 Java 8 语言特性语法糖的步骤。 如果你为Android 开发了.class 字节码读取或重写工具,则需要确保在 D8 内执行解析 Java 8 语言特性语法糖时,它们可以正确的处理 Java 8 字节码的格式。

一些有用的 Link

  1. 测试基准项目
  2. Android Studio Beta
  3. D8 相关问题反馈

编译:谷饭  原文:Android Developers Blog 配图:Android Developers Blog

Android 测试支持库 1.0 版本来喽!

号外,Android 测试支持库(Android Testing Support Library( ATSL)) 1.0 版本发布啦,这个版本是对现有测试 API 的一个重要的更新,此版本不仅添加了许多新的特性同时也提升了性能和稳定性以及修复了一些 bug。它提供了跟已经被废弃的 Android 平台测试 API 完全相等价的 API。此版本还增加了支持多进程的 Expresso (MultiProcess Espresso)Android Test Orchestrator。从 1.0 版开始将在 Google 的 Maven 中央仓库中发布版本,要了解有关使用此中央仓库的更多信息,请查看 Google Maven 中央仓库指南入门。另外Android 测试文档也有一些大的更新。把测试文档从 GitHub 网站迁移到了developers.android.google.cn/testing

此版本的主要更新有如下几个方面:

  1. Espresso Improvements

Espresso 3.0.0 带来了一些很赞的新特性以及全面的性能提升。比较有亮点的几个新特性是:

Multiprocess Espresso

关于 Multiprocess Espresso 跟多信息可以查看原文或者官方文档, 以及官方示例

Idling Registry

IdlingRegistry 是一个不会带来整个 Espresso 库的轻量级的注册表 (registry),因此你可以容易地在代码里注册资源。 当把 IdlingRegistry API 与 Multiprocess Espresso 结合时,可以在任何进程中通过代码来注册空闲资源。而 原有的 Espresso 的注册类现在已被弃用。

Idling Resources

在 Espresso 3.0.0 增加了新的资源包括:IdlingThreadPoolExecutorIdlingScheduledThreadPoolExecutor。 在 Espresso contrib 包中的 CountingIdlingResource 类不再推荐使用并且已经在此版本中被移除。取而代之的是 Espresso Idling 包中的新版 CountingIdlingResource 类,完整的迁移详细信息可以查看官方的更新日志

  1. ProviderTestRule

当你要测试 ContentProvider 对象时,现在可以使用ProviderTestRule 而不是ProviderTestCase2。 ProviderTestRule 提供了一种更简单的方法来处理 AndroidJUnit4 的测试规则。

ProviderTestRule 包括用于初始化的 API,以及针对 TestProvider 进行测试的命令。 如果您的ContentProvider 基于 SQLite 数据库,你可以使用 ProviderTestRule 命令设置数据库文件和初始化命令。

更多信息可以查看 ProviderTestRule 的使用文档。

Grant Permission Rule

在测试时使用 GrantPermissionRule 可以跳过运行时权限提示对话框,并且可以模拟用户为应用授予运行时权限。

  1. Android Test Orchestrator

通常情况下,AndroidJUnitRunner 会在相同的测试过程中运行所有测试,这可能会导致许多问题。 例如,测试在内存中共享其状态,如果一个测试崩溃,则会阻止测试套件的其余部分运行。使用新的 Android Test Orchestrator 可以在设备上实现完全测试隔离,如下图所示:

更多详细信息可以查看 Android Testing Orchestrator 开发者指南

  1. AndroidJUnitRunner
  1. 可以使用 JUnitParams
  2. 可以配置类加载器(class loaders) 和可以使用运行器参数 (runner arguments) 自定义 JUnit 测试过滤器 (JUnit test filters)

更多详细信息可以看更新日志

编译:谷饭  原文/配图:Android Developers Blog

Android DP4 来了,O 还会远吗?

期待已久的 Android O 预览版 4 (Developer Preview 4)  终于来了,这是在发布 Android O 最终版本之前的最后一个预览版,开发者可以借此机会尽快展开 Android O 系统的适配和测试并发布更新,等到 Android O 正式版发布之后可以让用户平稳过渡到 Android O 系统。

如果你有一个设备已经加入了 Android 测试计划,那么最近几天你的设备将会收到 DP 4 系统的更新,如果还没加入可以去 Android 测试计划官网加入并获得更新。

DP4 的主要更新有哪些?

  1. 预览版 3 以来所有可用的 APIs、bug 修复和一些优化
  2. Android O 预览版 4 设备镜像
  3. 标准版的 Android 26.0.0 支持库 (Support Library)
  4. 最近几天还会有 SDK、Tools 和 Android Emulator 系统镜像的增量更新等等
  5. 新版的 Android Testing Support Library,它包含了一些新特性,例如:Android Test Orchestrator、Multiprocess Espresso 等等

在 Android O 上测试你的应用

预览版 4 是 Android O 最终版的候选版本,所以你可以在预览版 4 上测试和适配你的的应用,在测试和适配的时候你需要适当的处理一下 Android O 的一些新的行为变更,比如:后台位置限制 (background location limits)通知频道 (notification channels)网络 (networking)安全 (security)标识符 (identifers) 等,更 Android O 的行为变更请到这里查看

用 Android O 的新特性和 API 增强你的应用

运行最新版本 Android 的用户通常在下载应用程序,消费内容和进行购买方面最为活跃。 他们更喜欢支持他们最喜爱的应用中的最新 Android 功能。 使用 Android O,用户期待着通知渠道和点,快速固定,画中画,自动填充等功能。 随着时间的推移,更多用户升级到Android O,这些功能还可以帮助您增加与应用的互动。

使用 Android 最新版的用户在应用下载、内容付费和付费购买方面最为活跃。他们更喜欢已经支持了 Android 最特性的应用。而对于 Android O,用户比较期待的新特性有:通知频道通知标记 (dots)固定的快捷方式 (shortcut pinning)画中画 (picture-in-picture)自动填充 (autofill)等等。随着更多的人升级到 Android O,这些新特性可以帮助你提升应用用户的活跃度。

在你的应用中使用 Android O 不仅能增加用户的活跃度还可以提供更多的安全性以及提高应用的性能。例如自适应图标 (adaptive icons)可下载的字体 (downloadable fonts)自适应的 TextView (autosizing TexeView) 等,并且可以大大减小你应用的 APK 大小。耗电量也是用户比较关心的一个问题,所以他们会感谢你的应用针对后台执行限制以及其他重要系统行为变更进行了优化。

如果想了解关于 Android O 预览版的所有新功能和 API 以及如何将其应用到你的应用中可以访问 Android O 开发者预览版网站

通过 Android Studio 加速你的应用开发

当你准备基于 Android O 做开发时,建议你更新到最新版本 的 Android Studio 3.0,可从预览版的渠道 (canary channel)下载。Android Studio 3.0 除了改进了应用性能分析工具,支持 Kotlin 编程语言和 Gradle 构建优化之外,Android Studio 3.0 还可以让开发者很方便的使用 Instant  AppsXML 字体 (XML Fonts)可下载字体 (Downloadable Fonts) 和自适应图标进行开发。另外还建议你将 Android 支持库更新到 26.0.0 稳定版本,它现在就可从 Google 的 Maven 中央仓库中获取,在未来的几天后可以获取到最新的 SDK,工具和仿真器系统映像(emulator system images)。

你可以将项目的 compileSdkVersion 更新为 API 26,以针对官方的 Android O API 进行编译。 还建议你将应用的 targetSdkVersion 更改为 API 26,以便对 Android O 的一些特定行为变更进行测试。关于如何设置你的 Android O 开发环境的详细信息,请查看官方给出的迁移指南

发布你的应用更新到 Google Play

Google Play 现在已经可以提交适配到 API 26 的应用啦(👏呱唧呱唧)。如果你已经准备好了,那么你现在就可以在 Alpha、Beta 或者 production 渠道中发布你的应用啦。但是你要确保你的应用在 Android O 以及旧版本系统上运行良好,建议你使用 Google Play 的 Beta 版测试功能,先获取一小部分早期用户 的反馈,然后在逐步放出新版。

如何获取到 Developer Preview 4

获取开发者预览 4 非常的简单,只需访问 android.com/beta 并选择您的手机或平板电脑。你也可以选择手动下载并把更新刷到手机里。 Android O开发者预览版已经适配了 Pixel,Pixel XL,Pixel C,Nexus 5X,Nexus 6P,Nexus Player 和 Android Emulator。 当我们发布 Android 的官方版本时,注册的设备将自动更新。欢迎继续分享和反馈你的问题和请求

编/译:谷饭  原文: Android Developer Blog