谷歌 2022 I/O 大会刚刚过去,这两天我也整理了不少篇文章和资讯,如果刚兴趣的可以在文末查看相关内容。
作为时隔 3 年再次回归海岸线圆形剧场,谷歌这次 I/O 大会可以说是干活满满,特别是本次大会的“线上会场”,Adventure 用类似“元宇宙”的概念,让广大开发者可以在“游戏”中逛遍所“展厅”,同时通过完成各种有趣的小游戏来参与大会,甚至你还可以钓鱼挂机…当然,最重要的是可以和全球各个开发者线上交流,这无疑是本次大会最优秀的一环。
作为本次 I/O 大会的关键词之一,AI 成为谷歌所有产品里的重要组成部分:
可以看到这次谷歌的所有产品线都充斥了 AI 的关键词,AI 在谷歌的每个产品线上都得到了落地,而从个人之前体验过的谷歌翻译、 Google Meet 和 Google doc 上看,例如 Meet 的 实时 cc 、 视频动态亮度和 doc 的补全分词等上的感受看,AI 确实带来了用户体验的进一步升级。
Android 系统作为每年的主角之一,本次发布的是 Android 13 Beta 2
,不过今年的 Android 13 在众多干货里反而有些“平平无奇”,而按照往年的惯例,正式版应该还是在年末的时候推出。
其实想想也很正常,Android 发展这么多年,如今确实很难出现什么让人眼前一亮的功能,而和去年一样,今年的重点还是在于隐私安全,然后还有 Material3 和折叠屏等相关的支持。
Android 13 上隐私调整最大的应该是新的照片选择器,在 Android 13 中选择照片,会要求调用系统本身的组件来读取照片,而不是调用第三方 App,并且这个特性不仅仅会在 Android 13 中出现,谷歌会将其放置到 Play 商店中,向 Android 11 和 Android 12 设备推送。
当然,这个调整最后在正式版中会如何要求还无法确定,因为按照之前 Android 10 、Android 11 关于读取 SD 文件的隐私要求作为参考,或者正式版中还是会有可以“兼容”的逻辑。
其他隐私相关还有:附近 WiFi 权限 、通知权限(某个 App 如果想要发出通知,需要用户授权) 、 存储媒体权限(可以为不同的存储媒体单独授权)、 富文本通信服务 (RCS) 的新标准 等等相关的改进。
Material You 也就是 Material 3 , 是在 Android 12 开始引入的一种设计语言,它带来了新的 UI 风格,还引入了基于壁纸的调色板控件,以及新的动画效果等。
谷歌对于 Material 3 的推广热情很高,不光是在 Android 上,在最新的 Flutter 3.0 也正式开始对 Material 3 的支持,但是做为国内的应用开发,相信大家应该都有一个共识:
国内的老板、产品或者设计大概率使用的是苹果手机,所以 Material 风格这么多年也没在国内流行起来,甚至开发还需要费一些精力去屏蔽对应的阴影或者点击效果。
当然,关于 Material 3 有一个比较有意思的点,可能大家反正了解的不多,那就是 HCT Google 全新的色彩空间。
那它有什么用呢?简单说就是:设计师第一次真正有了一套可以反映用户所见的色彩系统。
对于 HCT 其实是 Hue、Chroma、Tone 三个单词的缩写,可以解释为色相、色度和色调,通过谷歌开源的 Material Color Utilities 就可以方便实现接入。
Material Color Utilities 是一个跨平台的代码库,目前已支持 Dart、Java 和 Typecript 等语言,另外 C/C++ 和 Object-C 也在即将支持。如果对 HCT 感兴趣的可以去 Material Color Utilities 查阅相关资料 。
最后,本次 Android 13 Beta 1 也开放尝鲜,其中得到国内品牌确认并已公布刷机包的有:小米12、小米12 Pro、小米平板5 、Redmi K50 Pro、OPPO Find N、OPPO Find X5 Pro、一加10 Pro、realme GT2 Pr 等。
相信作为 Android 开发,每次 I/O 最关心的还有 Jetpack 和 Compose 相关的信息,目前 Android Jetpack 已经包含了 100 多个库、工具和指南,本次相关介绍有:
Room 2.5 开始使用 Kotlin 完成重写;通过 room-paging
内置对 Paging 3.0 的支持;直接执行 JOIN 查询而无需定义额外的数据结构等;
Paging 3.1 为 Rx 和 Guava 集成提供了支持,也就是除了 Kotlin 协程的还使用提供了 Java 的替代方案;
Navigation 通过 navigation-compose成到 Jetpack Compose 中;所有 Navigation 工件都已在 Kotlin 中完成重写;
通过 Baseline Profiles 优化 Apk 的安全和启动时间
通过 JankStats跟踪和分析应用 UI 中的性能问题;
AppCompat 1.4 集成了 Emoji2 库;
新的 DragAndDrop 支持接受来自其应用程序内部和外部的拖放数据;
新的 WindowManager 通过提供一个支持 API14 的通用 API 界面,帮助开发人员调整他们的应用以支持多窗口环境和新的设备外形;
可以看到如今的 Jetpack 体系已经相当丰富,基本上通过 Jetpack 系列的支持,开发人员几乎不需要使用第三方框架,这也是现在很多 Android 的开源项目不再维护的原因之一。
更多 Jetpack 内容请查阅文末链接
关于 Jetpack Compose,本次大会官方表示,目前 Play Store、Twitter、Aribnb 等大型企业都已经开始使用 Compose 进行开发,在 Play 商店中排名前 1000 的应用程序中有 100 多个正在使用 Compose。
而本次发布Compose 1.2 的第一个 beta 版本, 其中主要改进了:
可以看到本次放出的 Jetpack Compose 相关内容也十分丰富,目前 Compose 也正在被越来越多的的企业所使用。
可能有人就要说了,那 Compose Multiplatform Framework 的内容呢?
事实上 Compose Multiplatform Framework 是由 JetBrains 维护和开发,本质上 Jetpack Compose 是 Android Jetpack 里的 UI 框架,而 JetBrains 将它支持到跨平台。
所以正如目前关于 Compose Multiplatform Framework 的更新,大家可能更多要关注 JetBrains 的动态。
另外 Wear OS 支持用 Compose 编写 UI 无疑是本次 Compose 最大的亮点。
更多 Jetpack Compose 的详细内容, 请查阅文末链接
Flutter 本次也是作为 I/O 的主角之一,本次发布的 Flutter 3, 完成了 Flutter 从以移动为中心到多平台框架的路线图,本次大会主要是提供了 macOS 和 Linux 桌面应用相关的支持,以及对 Firebase 集成的改进、提高生产力和性能以及对 Apple Silicon 的支持等等。
Flutter 1.0 beta 发布以来的过去了四年,如今 Flutter 终于完成了对 Android、iOS 、 Web、Win、Linux、macOS 的全平台的正式版支持,可以说本次发布会对于 Flutter 来说有着交出第一份答卷的味道。
而根据 data.ai 等研究公司的分析以及公开推荐表明,Flutter 目前同样被许多领域的 客户 所使用,包括由:
如今,有超过 500,000 个使用 Flutter 构建的应用程序。
当然,这里不得不提在到字节跳动,Sneath 在受访中表示字节跳动目前是 Flutter 的主要用户,内部估计其有约 80 个基于 Flutter 的应用。
而关于 Flutter 的更新,本次 Flutter 除了发布 macOS 和 Linux 的正式版之外,主要还包含了:
没错,本次 Flutter 还有一个惊喜环节,那就是小游戏 I/O Pinball ,基于 Flutter 构建的 2D 游戏引擎 Flame 给了 Flutter 新的可能,如果对这个感兴趣,也可以查阅文末的相关文章。
更多 Flutter 的详细内容, 请查阅文末链接。另外本次大会的 Alex 大佬的 workshop 也可以关注下: https://goo.gle/LazyIndexedStack 。
Google I/O 2022:Jetpack 的新功能https://blog.csdn.net/ZuoYueLiang/article/details/124747854
Jetpack Compose 的新功能-谷歌 I/O 2022 https://blog.csdn.net/ZuoYueLiang/article/details/124747767
Flutter 3.0 新功能详解 https://blog.csdn.net/ZuoYueLiang/article/details/124723377
Flutter 3 相关介绍,包括 Flutter桌面端、Flutter firebase 、Flutter游戏 https://blog.csdn.net/ZuoYueLiang/article/details/124724102
基于 Flutter 和 Firebase 实现的小游戏 I/O Pinball https://blog.csdn.net/ZuoYueLiang/article/details/124729350