Google I/O'17 for android 的大新闻

Kotlin

以下摘抄自我在知乎上的回答:

这个新闻来得有点突然,有点像秘密筹划的(或者说是我们反映太慢还是风声传播得不远?)。
大概在一年多以前,还有人向官方提问,说 Google 曾经考虑过将 Kotlin 纳入官方语言,但据说因为 Kotlin 编译速度太慢,所以放弃考虑了。
当然,这是个谣言,立马被 Kotlin 官方的人回应了。Kotlin 在多数情况下并没有编译速度过慢的问题,而且也没有收到过 Google 官方宣称要合作的意图。
现在,Google 宣布 Kotlin 作为安卓开发语言被正式支持了,实在突然。说实话,Android Studio 3.0 官方支持 Kotlin 我也并不期待能带来多友好的变化,因为现在的 Kotlin 作为小三已经直逼正宫了,丝毫没有违和感。

再说说 Kotlin 和 Android 的渊源:

创造 Kotlin 的公司 Jetbrains 有深厚的 Java 开发经验:他们的 IDE 全部用 Java 创造,IntelliJ IDEA 作为最初拿出手的产品就是专门为 Java 这门语言打造的。
以至于到后来更多语言开发工具的支持以及独立的 IntelliJ Platform 的成功都功不可没。不得不说是 Java 成就了这家公司。
Kotlin 则是 Jatbrains 的工程师们对 Java 开发经验的总结,而自己创造的 JVM 语言。
Android Studio 是由 Google 和 Jetbrains 合作开发的 IDE 工具,在启动界面还可以看到 Powered by IntelliJ Platform 字样。也就是说 Android Studio 的开发都有 Kotlin 参与,Google 有什么理由不信任这门语言?

—— 说个多余的,如果你多关注 Kotlin 最近的项目和博客,会发现 Kotlin 的野心很大,:

移动平台(包括 IOS)、高并发服务端(利用协程)、嵌入式/物联网、科学计算等领域都是 Kotlin 的目标,不过能不能实现我倒是并不关心。 Kotlin 用于安卓让开发体验提升了不少这是实实在在的。

不过,即便是纯 Java 开发安卓也并不存在什么大的问题。以为学了 Kotlin 是一种投机取巧或者就能鄙视 Java 之类的心态还是省省。在高逼格的 Java 程序员面前你仍然是被吊着打。

题外话:

我使用 Kotlin 有一年多了,使用 Kotlin 以来在个人安卓应用几乎都会使用 Kotlin 参与开发。目前,我开源了两个新应用:

都是用纯 Kotlin 写的。

曾经也写过两篇 Kotlin 和安卓相关的文章:

我对 Kotlin 在安卓上的发展非常看好。

Android O

Android O 作为 Android 8.0 的预览版也已经提供镜像下载以及启动 Nexus/Pixel 设备的 beta 计划。虽然我使用的是 Nexus 手机,但是目前还未加入 beta 。

O 对于开发者而言带来的新特性:

  • 通知渠道:统一管理通知的新方式,例如可以建立通知渠道组,通知可以单独归类到某个组。
  • 画中画:Android TV 的画中画自 O 起,此功能开放到手机设备上了。
  • 自动填充:类似于浏览器表单的自动填充,但是这个填充数据由系统管理。它不仅仅可以填充于网页表单,还可以填充在任何应用的编辑框上。
  • 自适应图标:在不同的设备型号上可以显示出不同的 Launcher 图标。(个人觉得这个有点莫名其妙)

所有新特性以及详细描述请看这里:https://developer.android.com/preview/api-overview.html#aware

我对 Android O 的画中画功能特别感兴趣,说实话差点因为想体验这个功能就把手机刷上了最新的 Android O 呢。但是后来想了想,我这种人不 root 手机真的没法用下去,而 Android O 只提供了出厂固件没提供 OTA 固件,也就是说 root 以后不能通过 OTA 升级的话就没别的方式能升级了,所以还是暂时不考虑使用预览版系统了。
(root 以后无法通过 OTA 升级,只能通过线刷出厂或者 OTA 固件的方式升级。前者会重置手机后者不会,目前没有提供 OTA 固件,所以我如果 root 了 Android O,那么每次更新都要刷出厂固件手机数据被重置,非常麻烦)

于是我尝试了 Pre 版本 AS 中开放的 Android O 镜像,创建了一个 API O 版本的 AVD,同样可以体验到了这个开发功能(视频录制如下):

实际上从开发角度来看,和 Android N 那时候的 PIP Mode 使用方式基本没什么差别。