7 月 4 日,GDG Shanghai 社区举办的 Android 11 Meetup 圆满结束。活动中,现场和线上的参与者们也提出了很多精彩的问题。在此,我们将部分精选问答发布,大家可以一同回顾。
当然,如果你错过了当日的现场直播,这里还有演讲文档,大家可以补作业哟~
Q1
在我的记忆里,历史上 Android 有两次大的 UI 更新,一次是 2.x 时代到 4.x 时代的变化,一次是 5.x 带来的 Material Design,距离上次的更新也很长久了,在未来版本是否有计划更新 UI 方面的东西呢?比如给 UI 带来更多的物理特性,更贴近现实感受。
A
其实 Material Design 一直在演变。比如黑暗主题的支持、动画过渡的指导、图标设计的更新等等。
想要了解更多,可访问 https://material.io/whats-new。另外,大家可以尝试利用 Material Components 库来实现各种设计模式。
Material Components
https://github.com/material-components/material-components-android
Q2
Android 对 5G 支持的计划是怎么样的?
A
随着 5G 渗透率不断提升,Android 11 提供了相应的网络支持,帮助开发者判断当前连接网络的流量计费状态和估测带宽。APP 可按照这些信息,向用户提供不同的体验。
Q3
Andriod 什么时候能更新下载?
A
Android 11 Beta 版现在已进入了 API 稳定期。我们计划在第三季度发布最终版。
Q4
权限申请 API 有计划改善吗?
A
虽然 Android 11 改变了一些权限特性,如一次性权限和后台地理权限的授予,但是为了保障应用兼容性,我们没有更改有关权限的 API。值得一题的是 Jetpack 发布了一个目前还是在 Alpha 阶段,名为 Activity Library 的库。您可以利用 ActivitiyResultContracts 类来简化处理权限结果回调的代码。
Q5
Jetpack 有一个正在开发的 UI 工具库 Compose,关于它我想问的两个问题:它和 Flutter 原理之间有什么区别,和以后会不会颠覆常规的 Android 的开发模式?
A
Jetpack Compose 的架构设计跟 Flutter、RN、Vue.js 等框架是很相似 —— 它们都是基于反应式的 UI 编程。而且,Jetpack Compose 也结合了 Kotlin 语言,可以和现有的代码共存。如果选用 Compose,就不需要再用 XML 布局等组件啦。大家可以参考我们的 JetNews 样例代码。
样例代码
https://github.com/android/compose-samples/tree/master/JetNews
Q6
Compose 有大概的发布时间吗?什么时候能在实际开发中使用上?
A
Jetpack Compose 现在是在开发者预览版阶段。目前计划是在今年夏季发布 Alpha 版,明年 (2021 年) 将发布 1.0 版。我们希望开发者尝试后能积极给我们分享反馈!
Q7
应用崩溃原因报告功能 (ActivityManager#getHistoricalProcessExitReasons API) 的循环缓存如果在开屏就闪退如何解决?AppExitInfo 是写在内存还是存储?
A
大家可以考虑在 Activity 之前的应用初始化逻辑内调用 getHistoricalProcessExitReasons()。一个普遍的做法是放在 Content Provider 里。Android Jetpack 刚发布了一个基于 Content Provider 的 App Startup 库,您可访问以了解更多信息。
App Startup
https://developer.android.google.cn/topic/libraries/app-startup
系统会定时把在内存的 AppExitInfo 内容写到存储。
Q8
Android 10 之后对于设备唯一码怎么确定呢,现在的方案都是自己根据设备信息生成,有重复的几率?
A
为了保障隐私,我们鼓励开发者利用一些用户可重置的唯一码。按照具体场景,系统提供几个让开发者选择的方案。一般 MAU/DAU 等用户统计的可以用 java.util.UUID。这个值的唯一性是每 app,每设备用户 (device user)。如果需要追踪跨应用(签名相同)卸载,可使用 Settings.Secure.ANDROID_ID。
Q9
使用 Kotlin 编译出来的软件体积会比较大,未来 Kotlin 代码会有针对性优化吗?
A
APK 体积是我们一直都有关注的问题。Android 和 JetBrains 团队一直在不断的改进 Kotlin 编译器有关的性能。
Q10
对热更新机制是否会进行限制?
A
请注意:Google Play 的政策是禁止热更新的,应用不可以包含任何热更新的能力(不能仅靠设置来关闭)。在国内,我们理解应用需要进行热更新的诉求,也和头部的热更新厂商合作,在第一时间对新的系统进行适配。请应用开发者及时升级热更新框架已获得对新系统的兼容性,也帮助我们敦促热更新厂商尽早完成对新系统的兼容。
Q11
什么时候会限制上架 Google Play 的最小版本为 30?
A
根据 Google Play 的长期政策,在 Android 11 最终版发布 1 年后,所有应用的 targetSdkVersion 需要提升到 30 或以上。Google Play 对 minSdkVersion 暂时没有要求。
敬请期待
Android 11 Meetups 系列活动(7 月 4 日至 8 月 15 日)还在持续进行中,如果你明天和未来周六日有空,欢迎参与到线上活动中来。
活动的时间安排和直播信息:
携手 Flutter 和 Kotlin 探索 Android11(杭州,7 月 21 日)
活动详情:https://www.meetup.com/Hangzhou-GDG/events/271247502
直播链接:http://live.bilibili.com/6874998
Kotlin 协程 和 Jetpack Architecture Components(上海,7 月 25 日)
直播详情:https://www.meetup.com/Shanghai-GDG/events/271624622
直播链接:https://live.bilibili.com/21917305
Android 11 的新特性及入门体验(东莞,7 月 25日)
活动详情:https://www.meetup.com/GDG-Dongguan/events/271444212/
直播详情:http://live.bilibili.com/22317385
IDE 使用技巧 与 Jetpack 详解(北京,7 月 26 日)
活动详情:https://www.meetup.com/GDG-Beijing/events/271332618
直播链接:https://live.bilibili.com/22371554
Android 11 & Flutter Meetup(深圳,7 月 26 日)
活动详情:https://www.meetup.com/GDG-Shenzhen/events/271597584/
直播链接:https://live.bilibili.com/h5/21070197
Android 11 Meetups 活动持续进行中
请继续关注我们~