在发布了第五个 Android 7.0 开发者预览版之后,Android 开发团队又紧锣密鼓地在 Reddit 上发起了一次 AMA。

AMA 即 Ask Me Anything,是国外著名在线论坛 Reddit 上最为热门的版块之一。很多国外娱乐圈艺人、网红、机构组织和开发团队都喜欢通过 AMA 与粉丝进行信息沟通与互动。在这个板块里 Reddit 用户几乎可以针对任何话题对发起 AMA 的人或组织提出问题,发起者对这些问题进行选择性回答,因此你甚至可以把它看作是一场网络新闻发布会。

那么这一次 Google 的 Android 开发团队在 Reddit AMA 上都与网友聊了些什么?我们整理了一些你可能会感兴趣的话题。

第三方手机什么时候才能用上 7.0?

这个不前还不能透露太多,不过为了能让更多设备尽快升级到 Android 7.0,我们在开发预览版的时候就已经和各大厂商开始合作了。

暗色主题和夜间模式,还得再等等

截止 Android 7.0 的第五个开发者预览版,Android 开发团队已经彻底阉割掉了前几个开发者预览版中出现过的暗色主题和夜间模式。眼看这已经是正式版推送之前最后一个开发者预览版本,部分用户开始担心起这两个特性在 Android 系统中的命运。

图片来自 Android Police

针对这个问题,Android 开发团队首先强调,暗色主题和夜间模式其实是两码事

暗色主题会根据界面管理器的夜间模式设定,自动为 Material 元素进行明暗主题切换。尽管很多人都希望能在系统设置中正式加入这个功能,开发团队也数次在 Android 6.0 和 7.0 的开发者预览版中试着实现这一功能,但出于 Android 生态的考虑,最后他们不得不放弃这个想法:暗色主题的存在意味着要进行双倍的设计开发工作和确认环节来确保暗色主题在视觉风格上的完美适配,这会导致设计与开发资源严重分配不均(在 WebView 上就难以实现在将内容转化为暗色主题的同时保留内容的原本样式)。

而夜间模式更像是基于 Android 6.0 时引入的 Display Accessibility APIs 开发的屏幕滤镜。如何有效地在一些低端图形处理驱动上适配该功能的同时处理好「白天」与「夜间」的自动切换问题,这些都需要开发团队谨慎对待。

因而要在目前的 Android 系统中开放这两个功能的入口其实是一种非常不负责任的行为,在它们尚未脱离「半成品」状态之前,开发团队只会以支持库(support library)的形式将暗色主题的相关内容开放给开发者,为第三方应用开发者提供简单可行的暗色主题解决方案。另一方面,开发团队也不会将尚未成熟的夜间模式加入到 Android 7.0 当中,但他们对这个功能抱有相当大希望,它也许会在今后的 Android 系统版本中正式亮相。

Doze Mode 更加完善,配合 GCM 服务效果更佳

Android 在 6.0 中加入了 Doze Mode 这一节能策略,当设备静止且处于空闲状态时,系统会通过推迟应用的 CPU 和网络活动来达到省电并延长续航时间的目的。Android 7.0 的 Doze Mode 则更加完善(或者说更加「激进」):只要屏幕关闭了一段时间,且设备未插入电源,Doze Mode 就会被激活,无论设备是否处于运行状态。

Doze Mode 的工作原理

Android 开发团队在这次 Reddit AMA 上也阐明了他们对于 Doze Mode 的态度。尽管那些有特殊需要的应用可以通过「禁用电池优化」这个选项来绕过 Doze Mode 的限制,但他们想让开发者尽量避免这种做法。在 Android 开发团队看来,任何一个选择绕过 Doze Mode 的应用都可能会在很大程度上缩减用户设备的续航时间。因而他们将不断加大对 Doze Mode 开发和完善力度,同时也非常希望开发者能够更多地依赖 Google 自家的 GCM(Google Cloud Messaging)推送服务来进行唤醒和消息推送。

较为遗憾的是,尽管 Android 开发团队在改善 Android 系统的续航问题上做出了如此巨大的努力,由于 GCM 推送服务所依赖的 Google Services 在国内无法正常运作,Doze Mode 在国内的 Android 用户身上的体验也就得大打折扣了。

Material Design 很好,我们不会随便换了

与 Android 系统一样,Material Design 设计语言也一直是众多 Android 用户和应用开发者所关注的热点问题。

在被问到「Material Design 寿命几何」这样的问题时,Android 开发团队表示,Material Design 还有相当大的成长和演化空间,新的 widgets 在不断涌现、一些具体的设计特性和规范也在不断地调整和重构,因而短期内他们不会考虑寻找 Material Design 的替代方案

事实上,他们对 Material Design 设计语言本身也抱有相当大的信心,在他们看来,Material Design 在动效、样式和布局等方面所坚持的理念与传统设计语言和规范相比更加符合当前应用开发的需求和未来应用设计的发展方向。

最后,针对部分开发者提出的官方所提供的 Material Design Library 中动效库较少的问题,Android 开发团队表示他们将不断完善为开发者所提供的支持库,但动效本身是一件非常复杂且细致的问题。动效如何使用会也决定整个应用的构建方式和应用特色,因而他们想在动效这个问题上留给应用开发者更多灵活性和发挥空间。

Android 正在试着平衡 Power User 与普通用户的关系

也许你曾经在 Android 系统的「开发者选项」中看见过「长按返回键强制结束程序」,但部分用户已经留意到,这个功能也已经随着 Android 系统的更新从「开发者选项」中移除了。

在此次 Reddit AMA 中,Android 开发团队同样对这个问题进行了解答。在他们看来,「长按返回键强制结束程序」这个功能其实存在着很多问题,其中很大一部分在于,「长按返回键」这个操作其实已经为部分第三方应用做了保留,来确保开发者可以在自己的应用中调用长按返回键这个操作来实现更多的功能。为了避免冲突,他们不得不在近期的 Android 系统更新中去掉了这个功能。

借此 Android 开发团队同时也强调,在 Android 系统功能的开发上,他们一直都在努力避免一些面向 Power User 的功能对普通 Android 用户造成不必要的困扰,但他们同时也在试着平衡二者之间的关系:在 Android 7.0 中,双击多任务按键可以在最近的两个任务中快速切换这个设计就是一个很好的例子。

应用编译语言:Java 已经很好了

从 Android 7.0 开始,开发者可以使用 Java 8 语言来编写应用程序,虽然目前 Android 7.0 对 Java 8 的支持并不全面,但这一点依然足以引起很多开发者的讨论,虽然 Java 是一种很好的编程语言,但却并不是最简单也最有效率的。开发者社区中已经出现了很多非官方支持的 Android 程序开发语言,比如 Kotlin、Groovy、Scala 等等。

即便如此,Android 开发团队也表示他们在短时间内不会考虑支持上述任何一种非官方编译语言。相反,目前他们更希望把工作重心放在关注 Java 编译语言在 Android 应用程序开发中的使用体验并不断做出调整和优化。

听说会支持 Swift 语言开发 Android 应用?

并不会。(Nope, not happening.)


除了上面这些话题之外,开发团队还探讨了 Android NDK、API、Fragments 等诸多涉及到 Android 应用开发相关的问题。如果你想要了解更多,可以点此前往原帖进行查看。

I'm a deadline-chasing Starcat.
加载评论中