Now in Android | 12 月刊 · 2019

作者 / Chet Haase, Android 开发技术推广工程师 


欢迎大家来到 Now in Android 栏目,本栏目将专注于为开发者们提供近期值得关注的 Android 开发热点内容。



Android Dev Summit 视频回顾


我们于近两个月一直在连载关于 Android Dev Summit 的中文字幕视频,包括《是时候迁移至 AndroidX 了》《Android Studio 的进展与新功能》《Fragment 的过去、现在和将来》等。也请同时关注我们的 Bilibili 账号查看更多谷歌开发技术视频!

  • Bilibili 账号
    https://space.bilibili.com/64169458 



手势导航连载


我们的同事 Chris Banes 为各位开发者们发布了一个「手势导航」系列的文章,帮助大家处理 Android 10 中的手势变更的问题:


《手势导航 (一) | 开启全面屏体验》介绍了将应用构建到全面屏设备,开启 "边到边" 的全面屏体验之旅。


《手势导航 (二) | 处理视觉冲突》介绍如何处理与系统 UI 出现视觉重叠的问题,判断安全的交互区域。


《手势导航 (三) | 处理手势冲突》介绍如何处理您的应用和 Android 10 中新引入的系统交互手势之间的冲突。


《手势导航 (四) | 沉浸模式》介绍手势交互和冲突在全屏应用 (系统栏也被隐藏) 下的情况和注意事项。



无障碍文档改进


文档团队最近迭代了一些无障碍 (Accessibility) 相关的文档。其中请大家特别关注这两篇: 让应用使用起来更没有障碍》和《改进应用无障碍特性的原则》。尤其需要大家留意的是关于标签元素 (Label) 的章节,我们在其中提供了大量的案例来进行重点讲解。 


  • 让应用使用起来更没有障碍
    https://developer.android.google.cn/guide/topics/ui/accessibility/apps
  • 改进应用无障碍特性的原则
    https://developer.android.google.cn/guide/topics/ui/accessibility/principles 


AndroidX 库发布情况更新


近一个月内的一些主要组件更新到了一个里程碑版本,包括稳定版和发布候选版:

稳定版发布列表

Room 2.2.3 在 2.2.0 稳定版的基础上做了一些 bug 修复。这里回顾一下我们在 10 月初发布的 Room 2.2.0 这个重要的正式版本中所包含的新内容:

  1. 预封装的数据库。现在您可以在自己的 APK 资源中发布一个预先填充过内容的数据库,也可以经由文件来加载数据库内容。Florina Muntenescu 几周前在一篇文章中介绍过这个功能。
  2. 更好的关系: SQLite 可以处理多对多关系,但以前的 Room 就不行……现在可以了 (我们接下来会发布一篇介绍文章,敬请关注)。 
  3. Flow为了完善前一个发布版本中对协程的使用,Room 现在支持将 Flow<T> 作为 DAO 返回类型。 
  4. 速度更快的构建 (相信这正是大家想要的): 注解处理器的增量构建优势现在也被用在了 Room 上 。这个功能现在还没有默认启用,但大家可以在自己的构建中做一些设置来启用这个功能,从而提升速度。


  • 预先填充您的 Room 数据库内容
    https://medium.com/androiddevelopers/packing-the-room-pre-populate-your-database-with-this-one-method-333ae190e680
  • Flow
    https://kotlinlang.org/docs/reference/coroutines/flow.html
  • 配置编译器选项
    https://developer.android.google.cn/jetpack/androidx/releases/room#compiler-options


ViewPager2 1.0.0

相比较旧版的 ViewPager,ViewPager2 所做的改进有: 
  • 支持 RTL (从右向左) 布局
  • 支持竖直朝向布局
  • 可靠的 Fragment 支持 (包括将变动信息传递给下层的 Fragment 集合)
  • 数据集变化动画 (包括对 DiffUtil 的支持)


从旧版 ViewPager 迁移至 ViewPager2 十分轻松 (我们尽可能确保了 API 的延续性)。请参考迁移指南和我们提供的示例应用。 


  • 从 ViewPager 迁移至 ViewPager2
    https://developer.android.google.cn/training/animation/vp2-migration
  • ViewPager2 示例应用
    https://github.com/android/views-widgets-samples/tree/master/ViewPager2


请阅读 ViewPager2 使用指南以了解如何在 Fragment 页面间完成滑动操作。 

  • 使用 ViewPager2 在 Fragment 之间滑动

    https://developer.android.google.cn/training/animation/screen-slide-2


Transition 1.2.0
如果您的编译目标是 API 29,这次更新对您来说就非常重要。Android 10 针对非 SDK 接口 (限制非公开 API 的使用) 做出的更改影响了一些方法,而这些方法影响到了 Transition 代码库的映射。更新后的代码库将使用我们提供的新版公开方法。所以,如果您确有需要,请更新到这个版本。


  • 针对非 SDK 接口的限制

    https://developer.android.google.cn/distribute/best-practices/develop/restrictions-non-sdk-interfaces


同时发布稳定版的组件库有: 
  • Annotation-Experimental 1.0.0
  • Autofill 1.0.0
  • Benchmark 1.0.0
  • Biometric 1.0.1
  • Browser 1.2.0
  • CoordinatorLayout 1.1.0
  • Enterprise 1.0.0
  • Exifinterface 1.1.0
  • Paging 2.1.1
  • Recyclerview 1.1.0
  • ViewPager2 1.0.0
  • Webkit 1.1.0。


上述提到的组件库发布相关内容,请参见这个链接了解更多: https://developer.android.google.cn/jetpack/androidx/versions/stable-channel?hl=en#december_18_2019

发布候选 (Release Candidate) 列表

发布候选的意思基本上是: "我们认为它已经进入稳定/终版状态,不过在正式这么宣布之前,我们会再观察一阵子"。下面的这些代码库即将在它们的下个版本进入发布候选列表:

  • Activity 1.1.0-rc03
  • Core 1.2.0-rc01
  • Fragment 1.2.0-rc04
  • Lifecycle 2.2.0-rc03
  • Lifecycle-ViewModel-Savedstate 1.0.0-rc03
  • Navigation 2.2.0-rc04
  • ShareTarget 1.0.0-rc01
  • Transition 1.3.0-rc02

关于所有 RC 版组件库的发布和更新,请参见这个链接了解更多: https://developer.android.google.cn/jetpack/androidx/versions/rc-channel?hl=en#december_18_2019



Jetpack Compose


△ Jetpack Compose 使用教程中的示例代码
Jetpack Compose 在十月底的 Android Dev Summit 上公布,不过它并不属于典型的 alpha/beta/发布候选/稳定版的范畴: 它属于 "开发者预览版" 。这是一种非常早期的版本,比 alpha 版还早,我们的团队还会不断改进它。如果您现在就想一睹为快,上手做做代码实验,请移步至 Jetpack Compose 教程,其中提供了许多内容帮您上手。此外,正如许多教程都会做的那样,它也会为您提供一些解释说明和范例。

  • Jetpack Compose 使用教程
    https://developer.android.google.cn/jetpack/compose/tutorial


如果您想要上手操作更深入的范例,请来试试我们全新推出的 Codelab: Jetpack Compose Basics

  • Jetpack Compose Basics

    https://codelabs.developers.google.com/codelabs/jetpack-compose-basics/#0



学习课程和开发指南


Udacity 课程

△ 使用 Kotlin 进行 Android 进阶开发

Udacity 现已推出全新的免费课程: 使用 Kotlin 进行 Android 进阶开发。这些全新的内容由开发者关系团队的多名成员讲授 (我也会在课程里为大家讲解属性动画,正如我自 2012 年以来在 DevBytes 中所做的一样。生活很有趣,是一个螺旋上升的过程不是吗?)


这套课程涵盖了 Android 开发过程中的各种进阶问题,包括通知、定制视图、动画、映射、测试,以及使用 Firebase UI 登录等等。 


  • 使用 Kotlin 进行 Android 进阶开发
    https://cn.udacity.com/course/advanced-android-with-kotlin--ud940


Codelabs

△ 使用 Kotlin 进行 Android 进阶开发的 Codelabs 列表

我们还为各位开发者们准备了一系列新的 Codelabs,组成了一个 "使用 Kotlin 进行 Android 进阶开发" 的课程。这一系列的 Codelabs 安排与教学课程类似,相比较全部由讲师主导课程,我们希望可以让开发者们自行决定学习进度,并在这个基础上与视频教学内容配合学习。无论您是喜欢通过阅读和代码实验来自行解决问题,还是倾向于在讲师的帮助下了解代码,我们都可以满足您的需求。您只需要: 选好方向,开始学习!


  • 课程主页: 使用 Kotlin 进行 Android 进阶开发
    https://codelabs.developers.google.com/advanced-android-kotlin-training/


另外我们还推出了使用 Dagger 进行依赖注入的 Codelab,也别忘了进来看看。


  • Codelab: 使用 Dagger 进行依赖注入
    https://codelabs.developers.google.com/codelabs/android-dagger/#0


依赖注入的开发指南

我们还制作了一个全新的指南,教您如何在 Android 中进行依赖注入 (Dependency Injection, DI)。为了更加扎实地指导大家编写 Android 应用,我们推荐大家采用 Dagger 来进行 DI 操作。(请注意,我们提供的指导和建议仅供参考,目的是向大家说明各种选择的作用,并不是非遵循不可的规则;最适合自己的代码写法还是只有自己最清楚。) 


  • 在 Android 中进行依赖注入
    https://developer.android.google.cn/training/dependency-injection



Android Studio 4.0 Canary


通常我们并不会公开发表 Studio 的 canary 版本,因为大多数开发者想要的是更加稳定的终版。不过 4.0 版本中备受期待的功能实在太多,实在是值得拿出来一说。我们已经在 Android 开发者峰会上多次介绍过它 (包括 Android Studio 的新功能介绍和新设计工具介绍),这里再多说几句也无妨。


4.0 版本中的部分新功能包括: 
  • 如果您想尝试一下 Compose 的开发者预览版本,就必须使用 4.0 版本。

△ Motion Editor 可以编辑起始和结束状态,以及在二者之间切换时的动画
  • Motion Editor: MotionLayout 的初步版本已经发布了一段时间,但只能靠 XML 编辑器来操作的话感觉就很不方便。现在大家可以使用专门为它构建的设计工具来创建动画了。
  • Java 8 代码库脱糖,包括对 java.util.stream 以及其他 Java 8 API 的支持,以上支持均通过神奇的 D8 编译器完成。

……注意上面这些只是部分新功能,远不是全部!

请大家参阅发布说明以了解各种功能的详情。如果您想要试用这些新功能,请前往 Canary 频道下载。 


  • 发布说明
    https://developer.android.google.cn/studio/preview/features/#4.0
  • Canary 频道
    https://developer.android.google.cn/studio/preview



又到了追踪圣诞老人的时节了!


年关将至,Santa Tracker 再度归来!今年我们的 "追踪圣诞老人" Android 应用与网站、新游戏等等内容进行了更丰富的整合。这次我们也会照例在明年年初对应用进行开源,请关注我们的 GitHub,时刻了解最新进展。


  • 追踪圣诞老人 Android 应用
    https://play.google.com/store/apps/details?id=com.google.android.apps.santatracker
  • 追踪圣诞老人官方网站
    https://santatracker.google.com/
  • 追踪圣诞老人的 GitHub
    https://github.com/google/santa-tracker-android

谢谢大家对 Now in Android 栏目的支持,祝大家在 Android 开发路上一切顺心!



 点击屏末  | 提交产品反馈建议

  想了解更多 Android 内容?


  • 在公众号首页发送关键词 "Android",获取相关历史技术文章;

  • 在公众号首页发送关键词 "ADS",获取开发者峰会演讲中文字幕视频;

  • 还有更多疑惑?欢迎点击菜单 "联系我们" 反馈您在开发过程中遇到的问题。

推荐阅读