Now in Android:13 万众瞩目的 Android 11!

5,441 阅读10分钟

Hello 各位同学好呀,我是 wanbo,今天我们继续更新 Now in Android 第十三期的内容。

Now in Android 是由 Chet Haase 在 Medium 上发布的一系列关于 Android 相关技术的文章,创办这个系列的目的是为了,帮助广大开发者可以更好的掌握 Android 的最新技术动态,最近 Android Team 重新设计了新系列的 Now in Android 。全新的 Now in Android 目前将会整合所有 Android 开发者需要掌握和学习的最新内容,以视频和文章的形式为大家统一介绍,并在文章中会附上相应技术的官方链接地址,帮助大家了解详细内容。

我也会结合自己的理解,在本公众号【Android|Kotlin】中为大家同步更新 Now in Android 的最新内容,同时这也是目前 Now in Android 这个系列的最新一期,终于赶上官方的进度了,感兴趣的同学记得关注订阅呀。

万众瞩目的 Android 11

在这里插入图片描述

尝鲜

截止到我写文章的时候,Android 11 已经发布第二个开发者预览版了,所以这里我会为大家合并整理两个版本的更新内容。

如果你想尝鲜 Android 11 的话,这里有两种方式可以马上体验到 Android 11.

  1. 手持 Pixel 2、3、4 的用户可以在 Android 11 官方获取系统镜像,通过线刷的方式刷入 Android 11。
  2. 通过 Android Studio 下载最新的 Android 11 镜像,通过 AS 自带的模拟器尝鲜。

需要注意的是,Android 11 目前才到开发者预览版,所以有很多未知的 bug,主力机谨慎升级。

Android 11 镜像下载地址:

developer.android.com/preview/dow…

新变化

作为开发者,每一次的 Android 大版本发布其实我们只需要关注两点就可以:变更和新特性。变更指的是:某些功能及 API 相较之前发生了变化。新特性指的是:在新版中新加入的功能及 API。

变更会影响到我们 App 中现有的功能在 Android 11 系统是否能正常工作,相比新特性我们更需要重点关注变更这个点。而新特性则标志着 Android 11 带给我们可能的新的需求场景,所以变更的内容是需要我们必须掌握的,而新特性可以先了解为主,当有实际需求出现的时候,再去细化研究也不迟。

由于篇幅的问题,这里为大家简单介绍几个新变化:

  1. Support for 5G:增加动态计费状态 API 和带宽估测 API,可检查未计量状态和带宽功能
  2. Bubbles 聊天气泡:聊天对话支持以气泡的形式悬浮在系统桌面上,其实这个功能早在 Android 10 就存在了,只不过隐藏在开发者选项中,需要手动开启,现在 Android 11 中全面开发供开发者自由适配。
  3. 一次性权限:在 Android 10 中申请权限时有三种选项:始终允许、仅在使用此应用时允许、拒绝。而在 Android 11 中增加了一次性权限,即仅允许这一次行为使用此权限,更加安全的控制了风险。
  4. 存储机制:在 Android 10 中就已经存在的全新的存储机制,只是 Android 10 中为强制开启,允许开发者过渡到 Android 11 适配,如果你还了解新的存储机制,那么这里有篇文章推荐给你。
  5. 生物验证 API:在 Android 11 中提供三种不同级别的验证类型:BIOMETRIC_STRONG、BIOMETRIC_WEAK、DEVICE_CREDENTIAL,分别代表强、弱和设备凭据,以支持不同的场景。
  6. BlobStoreManager:用于在应用之间安全的共享大型二进制文件。

关于更多 Android 11 开发者预览版 1 和 2 的详细内容,可以查看以下来自谷歌开发者的两片文章:

更上一层楼: Android 11 首个开发者预览版到来 Android 11 开发者预览版 2 现已发布

如何适配

在这里插入图片描述
这里根据官网的内容,总结提供给你几点建议:

  1. 优先查看 Android 11 中的变更文档,这包括行为变更和隐私权变更,同时还需要了解哪些变更是自动生效,哪些是被动生效的。自动生效是指当你的 App 即使没有修改 targetSdkVersion 和 compileSdkVersion 适配 Android 11,它也会在 Android 11 的设备上自动处理为变更后的逻辑。被动生效是指只有你将 targetSdkVersion 和 compileSdkVersion 修改为 Android 11 之后,这些变更才会生效。

    行为变更文档地址:

    developer.android.com/preview/beh…

    隐私权变更文档地址:

    developer.android.com/preview/pri…

  2. 你需要确保你的 App 与 Android 11 兼容,即在没有修改 targetSdkVersion 和 compileSdkVersion 的情况下,在 Android 11 的设备上确保用户可以正常使用 App 中的任何功能。因为上一点说了有些内容是自动生效的,所以这一步是你最先要处理的东西。

  3. 修改 targetSdkVersion 和 compileSdkVersion 到 Android 11 的对应版本,完成被动生效的适配内容。

  4. 查看 Androd 11 中的新特性,为之后的新需求做到心里有数。

    新特性文档地址:

    developer.android.com/preview/fea…

  5. 查看 Android 11 的版本说明,这其中会为开发者提供现有 Android 11 存在的已知 bug 方便我们遇到问题时更好的排查。

Android 11 发布时间线

在这里插入图片描述
上图是有关 Android 11 的发布时间线,其实不只是 Android 11,每一年的 Android 都是按照这个时间线发布的。

  • 2月-4月开发者预览版本的公布,通常会迭代 3 个版本
  • 5月-6月通常会在 Google I/O 上面发布首个 Beta 版本,虽然现在 Google I/O 线下会议已经取消了,但是应该还是会转移到线上进行。
  • 在 Q3 也就是第三季度,会发布最后一个 Beta 3 版本,这个版本通常就是正式版,这时 Google 会将代码发布到 AOSP,供各手机厂商适配,当然当 release 版本的发布才意味这 Google 正式开发完成,但 AOSP 上的代码是一直在 Push 的,所以各手机厂商通常都会提前拿到代码进行适配。

最后在科普一下,AOSP 上的 Android 代码才真正称的上是【原生 Android】,而 Pixel 上运行的 Android 系统和我们常用的 miui、flyme 一样都属于手机厂商二次开发的闭源系统。

Android Studio

Android Studio 3.6 正式版已经发布了,想必你也已经早早用上了。需要注意的是,Android Studio 4.0 进入了 beta 测试阶段,之前 alpha 存在的 Jetpack Compose 已经被移除了,如果想体验 Jetpack Compose 的同学,需要下载最新的 4.1 版本。

全新的后台位置指南

在这里插入图片描述
位置隐私可以说是 Android 众多隐私权限中最重要的了,Android 团队希望 App 对位置的使用,对用户而言是公开、透明、可控的。所以这次全新上线了,有关如何在后台正确的使用位置的指南,并在指南中提供了最佳实践方案。

文档地址:

developer.android.com/training/lo…

Dynamic Feature Module Testing

上一期 Now in Android:12 你知道 Emoji 是怎么来的吗?中为大家简单介绍了一下 Dynamic Feature Module,其中还提到了新的 Navigation 支持自动下载和安装 Dynamic Feature Module,这期 Now in Android 中提到了一个新的问题

Dynamic Feature Module 的测试是非常麻烦的,需要通过 Play Store 才能完成测试。

所以这里为大家提供了新的本地 Dynamic Feature Module 测试指南,不过需要 Play Core 1.6.5 以上版本才支持本地测试。

老实说这个功能和我们其实关系不大,就算有在 Play Store 上架的 App ,但是支持 Dynamic Feature Module 的应该也没有几个吧?有的话欢迎评论区告诉我。

文档地址:

developer.android.com/guide/app-b…

Material Motion

在这里插入图片描述
Android 中有设计好看的 App 很少,有设计好看而且交互也很好的那就更少了,当然这也与 Android 本身的机制有一些关系。但是在最近的几个版本中,无论是 Andorid API 还是 Android Studio 都在为能作出更好的动画和交互而作出努力。

Material Design 团队推出了一个 UI 过渡指南,同时其 Material Design Components library 中的控件在 1.2.0-alpha05 支持了一些常见的过渡效果。

如果你感兴趣,欢迎查看一下

material.io/design/moti…

文章推荐

Android Styling

在这里插入图片描述
在上期中为大家推荐了 Android Styling 系列中的一期文章:Theme vs Style,不知道你们有没有去看呢?在上期发布完成之后,我花一上午的时间把 Android Styling 这个系列的文章全部看了一遍,收获特别多,让我重新对 Theme 和 Style 有了全新的认知。

其中有介绍 Theme 和 Style 的应用场景、Android 系统中内置的公共样式属性、如何使用 Theme 轻松的完成品牌升级等等,内容特别棒!

说到这,问你们一个小问题,用来自检一下你对 Android 中样式相关的内容是否系统性的了解过。

你知道 ?android:attr/XXX 和 ?attr/XXX 区别在哪里吗?

如果你不知道,欢迎去阅读 Android Styling 这一系列的文章,帮你全部了解 Android 中样式相关的知识。

medium.com/@crafty

Use view binding to replace findViewById

在这里插入图片描述
之前的文章中介绍了 Android Studio 3.6 中新增加的 View binding,用来替代繁琐的 findViewById(),今天这里再分享一个来自 Sean McQuillan 的文章,在这篇文章中为大家介绍了 View binding 内部是如何实现的。

medium.com/androiddeve…

Using Biometric Prompt with CryptoObject

分享一篇 Isai Damier 的文章,展示了加密技术和生物识别技术如何协同工作来保护数据,尤其是政府、金融、医疗保健和企业应用。

medium.com/androiddeve…

代码分享:Biometric Login

根据上面的文章,Isai Damier 还创建了 GitHub 仓库,用于向大家介绍如何使用 AndroidX biometric library 将加密技术和生物识别技术集成到项目中。

github.com/android/sec…

视频分享

Vector Assets

在这里插入图片描述
第一个视频来自 Nick Butcher 分享的有关在 Android 中使用 Vector Assets 的种种好处,例如如何使用 Vector Assets 来提供清晰的、可调整大小的和可动画化的图像。

www.youtube.com/watch?v=fgb…

Sealed Classes

在这里插入图片描述
Florina Muntenescu 为大家介绍了如何使用 Kotlin 中的 Sealed Classes 来替代枚举,并展示了 Sealed Classes 区别去枚举的强大指出。

www.youtube.com/watch?v=OyI…

AndroidX Releases

最后是一些有关 AndroidX 的更新:Fragment 发布 1.2.2 版本,Media2 发布 1.0.3 版本、Room 发布 2.2.4 版本、Transition 发布 1.3.1 版本,看了更新日志,基本都是关于 bug 修复的。

完整更新日志在这里:

developer.android.com/jetpack/and…

最后

至此,就是全新的 Now in Android : 13 的内容,这一期为大家介绍了 Android 11 以及为如何适配 Android 11 提供了一些我个人的建议、分享了全新的后台位置指南和本地测试 Dynamic Feature Module 的指南,介绍了 Material Design Components 有关 UI 过渡效果的支持以及非常有用的几篇文章和视频供大家学习。

本公众号也会开启 Now in Android 的新系列更新,关注公众号【Android |Kotlin】,在首页点击 新鲜事儿 → Now in Android ,就可以看到这一系列文章的全部内容。

感谢你的阅读。