本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。

为期三天的Google I/O 2019大会终于在上周落下了帷幕,每年的Google
I/O大会都可以说是一场全球的开发者盛宴。不过可惜的是,由于和美国存在时差,I/O大会的直播时间正好是我们这边的深夜,因此对于大多数的人来说可能都只能通过回放的方式来观看I/O大会。另外由于会议全程都是使用的英文,因此对于一些英文不太好的朋友观看起来可能也会比较吃力。

因此今天我特意写了这样一篇文章来覆盖Google I/O
2019大会的全程重要内容,希望能给大家带来帮助。另外或许我也可能会将这类文章做成一个系列,每年都给大家带来Google I/O大会的完整回顾。

今年的Google I/O大会于美国时间5月7号-5月9号在Google总部的加州山景城海岸线圆形剧场举办,自2008年举办第一届Google
I/O大会以来,这已经是Google举办的第12届I/O大会了,规模也是一年比一年更宏大。


不过需要说明的是,这种大型的开发者会议并不是Google独创,美国有一定规模的大公司都喜欢搞这种一年一度,甚至是一年几度的大型会议。比如说苹果有WWDC大会,微软有Build大会,Facebook有F8大会,甚至连Airbnb都有自己的房东大会。

而Google基本上每年都会举办好几场这种大型开发者会议,我自己参加过的有Google Developer Days(GDD)大会,Play
Time大会。另外每年的11月份左右还会举办Android Dev Summit大会。而在这所有的开发者会议当中,Google I/O大会可以说是最盛大的。

可能大多数的朋友对于Google
I/O大会的会议流程还不是很了解,所以我先来解释一下。这是一场长达三天之久的会议,内容覆盖了Google的各种核心业务领域,包括Android系统、云端服务、人工智能、语音识别、增强现实、前端技术等等等等。并且很多的会议主题还都是在同一时间进行的,因此没有人可以将所有的会议内容全部都听完。

在大会开始的第一天上午,会有两个固定主题环节,Google Keynote和Developer Keynote。其中Google
Keynote是向全球所有Google用户介绍的,让每一位用户都知道Google在这一年里取得了什么新的成绩与突破,做出了什么新产品,以及未来的发展规划是什么样的。而Developer
Keynote则是向全球所有Google开发者介绍的,与开发者相关的最新重要信息都在这里。

Google Keynote和Developer
Keynote都是在主会场进行的,持续时间大概是三小时左右。在这两个最主要的环节结束之后,接下来就是各个不同的技术主题会议在诸多分会场同时进行了,每个时间段都差不多会有多达10个左右的技术主题会议在不同的分会场展开,开发者们可以根据自己的喜好选择去听哪一场会议。这次的I/O大会三天下来一共进行了175场不同技术主题会议的演讲,应该也是创下了历史之最。

当然本篇文章是不可能将这175场技术主题会议全部涵盖的,我主要向大家介绍的还是Google Keynote和Developer
Keynote中所提到的重点内容。另外我会在本文最后附上一些我认为比较重要的且与Android主题相关的分会场会议视频链接地址,有兴趣的朋友可以到这些链接中学习更多内容。

<>Google Keynote

I/O大会一开始最先登场的肯定是Google的CEO桑达尔·皮查伊,他那印度式口音的英语已经成为了每年I/O大会的标志。

皮查伊一开始介绍了Google一直以来所肩负的任务,就是组织和整理世界上所有的信息,并让它们变得有用以及人人触手可及。

而今天Google仍然会肩负着这个任务一直走下去,并且要从一家帮你找到信息的公司,变成一家帮你解决问题的公司。

接下来的Keynote分成了几块不同的主题,来阐述Google在这一年里取得的技术进展和突破,分别是由Google在各个块面的负责人上台介绍的。


首先是AR方面(增强现实),经过几年在AR领域的投入,现在越来越多的Google产品中已经融入了AR技术。比如Google搜索中就集成了AR功能,现在当你在Google上搜索一些内容时,如果该内容有相应的AR扩展,就可以直接通过点击链接来体验AR效果。举个例子,学习人体解剖学的学生可以直接通过Google搜索将器官模型放到你的书桌上。

另外Google还增强了Google
Lens功能,现在它可以通过摄像头识别现实中的物体。扫描饭店菜单它可以帮你推荐该饭店的热门菜,扫描杂志中的美食它可以向你演示该美食的制作过程,扫描一段外文它可以帮你自动翻译,并且直接朗读出来,这对于经常出国旅行的朋友以及一些有文字阅读障碍的人群来讲是一项非常有帮助的功能。

接下来Keynote的下一个主题是Google Assistant,Google
Assistant是一个语音助手,它可以准确识别你说的话,并执行相应的动作。但由于语音识别技术非常复杂,语音数据模型大小差不多有100G,是存储在Google云端的,因此你所说的每一句话都要上传到云端,然后由Google的服务器计算并进行识别,这样就导致了识别速度会比较慢。

而现在,Google取得了一个里程碑式的突破,将语音数据模型大小压缩到了0.5G,直接存储在了手机本地,因此现在Google
Assistant的语音识别速度比之前快了10倍。

除此之外,Google
Assistant还很聪明,不同于国产的一些智能音箱类的产品,它可不是机械式地识别你所讲的话,而是能够理解你们之间对话的上下文,甚至还可以了解你。

演讲人举了一个例子,他向Google Assistant询问去Mom’s House的交通状况现在怎么样?但是Mom’s
House到底是指哪里呢?在他的观念里Mom’s House指的就是他母亲的家,但是在别的地方,Mom’s
House可能是一家福利院的名字,或者是一家饭店的名字。

为了解决这个问题,Google Assistant使用了一套叫做Personal
References的技术,它会以你的世界为核心,站在你的角度上来理解你所说的话,这样当你说Mom’s House时它就可以准确理解你指的到底是哪里了。

当然这些功能之所以能够实现,全都要依赖Google强大的人工智能技术,可见Google在十几年前就开始在人工智能领域进行布局是多么明智的抉择。

接下来Google
CEO桑达尔·皮查伊又重新登台,向大家介绍了Google在人工智能领域发展到了什么程度,以及为什么Google的人工智能技术会这么领先。篇幅不大,但是由于涉及的知识比较专业,我其实没太听懂。紧接着皮查伊反而花了更长的篇幅介绍Google在隐私和安全方面的新功能,向大家解释了Google是多么重视用户的隐私和数据安全,并且将新的隐私和安全功能应用到了诸如Chrome、搜索、Google
Assistant、Youtube、Google News、Google Map等全系Google产品当中。这种对隐私的重视程度我在国内是从来没有见过的。


果不其然,介绍完了隐私与安全之后,皮查伊又回到了人工智能方面,讲述了Google的人工智能技术在现实生活中已经帮人们解决了多少问题。其中让我印象比较深刻的一点是,皮查伊提到了全球大约有5亿人群存在听力障碍的疾病,这让他们在与人沟通的时候非常吃力。而Google借助人工智能技术提供了一个Cloud
Speech API功能,它可以将对方所说的话实时翻译到屏幕上,使得听力有障碍的人士能够大大降低与人沟通的成本。


另外这一功能还可以进一步延伸,想象一下我们平时都遇到过想打开一个视频,但是又担心会吵到别人的场景,这个时候只能静音打开,比如微信就提供了静音播放的功能。可是静音播放只能看到画面,却不知道视频里面说什么,而Google就提供了这样一个功能,它可以实时识别视频中所说的内容,并用字幕的形式显示出来,我觉得在这一点上,微信可以尝试学习一下。

在结束了漫长的演讲之后,皮查伊终于离场了,接下来登台的是Android团队的美女负责人Stephanie
Cuthbertson,来向大家介绍Android系统的第10个版本Android Q。

Stephanie Cuthbertson一开始就宣布了一个里程碑,目前全球激活的Android设备已经达到了25亿台。

然后Stephanie Cuthbertson开始介绍Android Q版本中比较重要的一些新特性,主要有以下几点吧。

首先是可折叠屏,据我所知目前三星已经推出了全球第一款可折叠屏手机,而随着这个功能加入到Android
Q系统之后,以后应该会有越来越多的厂商推出可折叠屏手机,这或许会成为一个未来的新趋势。

下一个重要功能就是5G,5G的重要性,以及是未来必然的趋势相信大家都是清楚的,而Android
Q系统正式支持了5G功能,并且已经和超过20家运营商进行了5G合作。Stephanie
Cuthbertson说今年与Google合作的OEM厂商将会推出10多款5G手机,我们可以期待一下。

接下来Stephanie Cuthbertson又介绍了一些人工智能相关的功能,比如Live Caption、Smart
Reply等,虽然这些功能一定会很有用,但是我感觉这和Android Q系统关系不大,这些功能可以应用到Android之前的所有系统当中。

如果说上面的功能现场引起的反响并不强烈的话,那么接下来的功能绝对引起了现场雷鸣般的掌声,就是Android
Q系统终于支持夜间模式了。看上去并不复杂的功能,结果一直到了Android的第10个版本才支持,Google这一做风让我想起了苹果。

然后Stephanie Cuthbertson又用很长的篇幅介绍了一下Android Q系统的隐私与安全性,看来美国人真的是很在乎这个。她说在Gartner
2019年的安全性测试报告中,Android系统取得了最高安全等级的评级,当然这里指的是原生Android系统。

最后她又介绍了一些Android Q系统中新增的小功能。比如为了让你能够专心工作而不被不重要的事情打扰,新增了Focus
Mode模式。为了防止小孩子过度沉迷手机,新增了家长锁模式。都属于一些挺有用的功能,但是也并不算是什么革命性的创新。

目前Android Q
Beta版已经可以安装在13家手机厂商的21款手机当中了,我看到这里的时候真的感觉中国的手机厂商已经走在了世界的前列,因为这13家手机厂商中有5家都是来自中国大陆的。

介绍完了Android之后,接下来的Google Keynote就进入卖硬件的环节了。今年Google主要推出了两款硬件产品,分别是Nest Hub
Max和Pixel 3a。

Nest Hub Max我感觉实际上就是一个带屏幕的智能音箱,当然它的智能程度要远比国产的那些智能音箱要高得多,得益于Google强大的人工智能技术。

演讲人Rick Osterloh在台上演示了Nest Hub Max的很多功能,这里我就不给大家一一介绍了,贴出一张图让大家直观地看看Nest Hub
Max长什么样吧。

看上去很丑有没有,不过它还是能帮助我们做很多事情的,而且售价并不贵,只卖229美元,相信一定会有不少人愿意买账。

接下来介绍的就是万众期望的Pixel 3a手机了,作为Google自主研发的亲儿子手机,这次的Pixel
3a最为突出的一个特点就是廉价。Google设计这款手机的理念就是,我们不需要花大笔的钱像友商那样堆硬件,而是通过软件和人工智能的方式来让手机在廉价的硬件上跑出高端机的效果。为了举例说明,还在大屏幕上给出了一张黑暗光线环境下iPhone
X和Pixel 3a的拍照效果对比。

当然大会上还介绍了许多Pixel
3a的其他特性,这里我就不再进行一一介绍了,这款手机的售价是399美元,差不多是之前Pixel手机售价的一半,公布售价之后现场也是掌声不断。

Google
Keynote的最后一个主题又开始介绍人工智能,主要向我们解释了一些人工智能的工作原理,以及人工智能可以在哪些方向进行应用。比如目前Google已经与一些医疗机构进行合作,使用人工智能技术能够提前一年诊断出病人是否有潜在肺癌的风险,并提升40%左右的治愈机率。


由于整个人工智能主题的介绍涉及专业内容比较多,而且又都是用英语介绍的,我也没能完全听得明白,从现场观众给出的反应我能感受出来,其实大多数人也都没听明白,所以这里就给大家简单介绍到这里。

那么Google Keynote的主要内容差不多就是这些,接下来我们开始看一下Developer Keynote中的内容。

<>Developer Keynote

众所周知,Google是一家技术驱动的公司,因此开发者对于Google的重要性不用说也知道,所以每年的Developer
Keynote都是一个重磅环节。今年Developer Keynote的开场是由一个叫Thomas Kurian的印度大佬来主持的。

当他说到这是他参加的首次Google I/O时,我就知道这肯定不是一般人。Developer
Keynote的开场环节是不可能让一个刚加入Google一年的普通人来主持的。所以我就随手Google了一下他的来历,原来他之前是Oracle产品开发的总负责人,在Oracle工作了22年,去年才刚刚被Google挖了过来,现在负责Google
Cloud的业务。


当然这位大佬并没有介绍什么具体的技术,而是给全球开发者灌了五分钟的鸡汤。反正就是讲了讲他是如何走上程序员这条路的,以及现在开发者的环境相比于他的年代是如此之美好,现在是成为一名程序员的最好时机等等之类的。

鸡汤灌完了之后,接下来就进入到正式的技术环节了。首先介绍的第一个主题就是Android。Google工程师Chet
Haase上来就重提了一下Google对于隐私与安全有多么重视,在Android
Q中更是加入了诸多能够帮助用户更好地管理自己隐私的功能,并提倡大家多多使用Android Q Beta版,并多多向Google反馈问题。


接下来宣布的就是一个重磅消息了,Google在2017年的I/O大会上宣布支持使用Kotlin语言来开发Android应用程序,和Java同为一级开发语言。而今天Google正式宣布,Kotlin将由一级开发语言转为第一开发语言,未来Google提供的API都会优先以Kotlin为准。当然Java和C++开发也会继续支持下去,暂时还没有放弃Java的时间表。

Chet Haase说到,目前已有超过50%的专业Android开发者选择使用Kotlin,并且Kotlin目前是Github中上升最快的编程语言。

另外Chet Haase还开玩笑说道,由于Kotlin的代码实在是太简洁了,许多人使用Kotlin编程之后,为了能多练练指法甚至都开始写注释了。

其实看到了Google官方的态度之后,我也更加坚定了写《第一行代码
第3版》这本书的决心。Kotlin必然是未来大势所趋,但是在国内的推进过程中也必然会遇到很多的阻力,那么我也希望通过我写的这本书,能够为国内Kotlin语言的普及贡献一份力。

介绍完了Kotlin,Chet Haase开始介绍开发者需要关注的一些其他重要信息。其中去年在Google
I/O大会上推出的Jetpack开发组件今年又有新成员了,加入了诸如CameraX、SavedState for ViewModel、Jetpack
Compose等新组件。不过在Keynote上面并没有非常详细地介绍这些组件的作用是什么,等有机会的话我可能会专门写一篇文章来分析分析这些新组件。

然后Chet Haase又开始介绍Android Studio,之前的Android Studio
3.x版本虽然增加了许多功能,但是也存在着许多bug。在收到全球开发者的各种反馈之后,Android
Studio团队花了6个月的时间没有开发任何新功能,而是专门处理之前版本中的崩溃、性能问题、界面卡死、内存泄漏等等之类的bug。另外之前的Instant
Run功能也不够可靠,现在Android Studio团队进行了全新的重写,并改名叫Apply Changes功能。所有的这些改进都会在Android
Studio 3.5版本中体现,这将会是一个非常稳定的版本。

在Android主题的最后,Chet Haase竟然提到了一个In-app
updates功能,还找了另外一位工程师上台演示。什么!!这难道是Google官方的热更新功能吗?我满心期待地看下去,结果,帅哥你确定不是过来搞笑的吗?所谓的In-app
updates其实就是在App里弹出一个对话框提醒你有更新了,然后由用户手动去点击下载而已,和我们所理解的热更新完全不是同一回事。

不过这个In-app updates功能并不需要跳转到Google
Play商店,也不需要弹出安装界面,这一点上还是不错的。看来Google对于国内的这些热更新黑科技还是没啥兴趣,短时间内没有官方支持的可能。

Developer Keynote中Android主题相关的内容差不多就是这些,接下来是一些其他技术主题的内容,我就稍微介绍得简略一点了。

紧接着Android的是Google
Assistant主题,演讲人向大家介绍,开发者们可以通过一些配置文件,来让自己的网站更加适配Google搜索,或者让自己的App更加适配Android系统。

举个例子,只要开发者按照Google
Assistant规定的格式来配置属性,在Google搜索相关的内容时就可以显示诸如下图中的步骤过程,让用户可以一目了然。

类似地,如果开发者在App中按照Google
Assistant规定的格式来配置属性,那么用户就可以通过语音来操控App,完成诸如运动健身、照片分享、甚至是点外卖的功能。

Google Assistant主题结束之后,接下来又看到这位断臂美女工程师上台介绍Web开发的新技术了,我印象中上一届的Google
I/O大会上也有她的身影。Google为了表示自己全球无界限无歧视完全平等的态度,会让不同性别,不同肤色,不同种族,甚至是残障人士来参与到每一届的I/O大会当中。

Web开发方面的技术我不是特别熟,所以就简单帮大家总结几点内容吧。


第一点就是快,由Google开源的V8引擎现在解析JavaScript的速度比之前快了一倍,并且少占用了20%的内存。也就是我们使用新版的Chrome浏览器之后,网页加载速度会比之前更快,占用的内存会更少。

第二点就更加有用了,Chrome浏览器增加了一个Image Lazing
Loading功能。这个功能是什么意思呢?我们都知道,当使用浏览器打开一个网页的时候,浏览器会自动加载并解析这个网页上的所有内容,包括所有的图片。而有些图片可能在网页的最底部,我们或许根本就看不到它们,但却要付出加载这些图片的带宽和时间。为此,Chrome增加了这样一个Image
Lazy Loading的功能,允许我们指定只有当图片显示在界面上的时候才进行加载。

指定这样一个功能极其简单,只需要在img标签上加入一个loading属性就行了,如下所示:
<img src="io2019ftw.png" loading="lazy" />
剩下的事情Chrome浏览器都会帮我们自动搞定,这个功能对于开发者和用户而言都是一个极大的利好。

第三点,介绍了几个Web开发相关的新工具,比如向Lighthouse中添加了一个新的Performance
budgets功能,还有使用WebAssembly开发类似于本地App体验的网页程序等。

第四点,Chrome OS变得更加强大了。Chrome
OS是Google开发的一个桌面操作系统,我之前也使用过这个操作系统,但是它的功能十分有限,基本只能用来上上网而已。而现在Chrome
OS除了可以用来上网,还可以用来开发程序了,最新的Chrome
OS中集成了Linux系统虚拟机,不仅可以用来开发网页程序,还可以用来开发Android程序。不过这仍然是一个高度依赖于网络和Google服务的操作系统,对于国内用户来说可能还是很难使用。

Web开发主题的内容结束之后,接下来不可或缺的,又进入到了人工智能主题当中。


相比于前几年Google的人工智能技术虽然很牛,但是也很难让人理解,开发者也不知道该如何使用,今年Google将人工智能技术体系进行了归类,让所有开发者都能明白,我可以怎样使用Google的人工智能技术。

可以看到,Google将人工智能技术归为了三大类体系,ML Kit、Google Cloud和TensorFlow。

其中,ML Kit是你快速上手人工智能技术的最佳工具。这是一个常用AI技术的工具集,包括许多Google自己都在用的AI功能都集成在了ML
Kit里面,直接使用这个工具集可以让你立即就能实现出来一些非常棒的AI功能。

Google
Cloud是一个云端训练平台,做过人工智能模型训练的开发者应该都知道,训练一个模型对于硬件的要求极高,而且CPU的效率太低,基本都要使用GPU来训练才行,高端显卡有多贵大家都清楚的吧?而借助Google
Cloud,所有的训练工作都可以在云端完成,Google的云端那可都是最顶级的硬件,既省时又省事。


TensorFlow这个很多人就非常熟悉了,这是Google开源的一个机器学习训练框架。为什么要开源这个框架呢?当Google提供的默认人工智能服务不能满足你的需求时,你就可以使用TensorFlow框架来开发适合你自己的人工智能功能,当然这个技术难度就很深了,Keynote当中也不可能展开讨论。

通过这样的体系分类,我们就能一下子明白Google在人工智能方面到底给开发者提供了哪些服务,开发者们也就可以自主去选择相应服务来实现自己人工智能相关的需求了。

人工智能主题持续的时间非常长,上面我也只是简单地总结了一下而已。本来就在我以为Developer
Keynote的所有内容都要结束的时候,接下来还有一个主题没有被忘记,那就是Flutter。


当然主讲人并没有介绍多少Flutter的具体内容,而是主要宣布了一件事情,那就是Flutter除了支持开发Android和iOS程序之外,现在还支持开发Web程序了。


之前有过不少朋友在公众号里问我,是学习Flutter开发还是学习Android开发?这个问题在我看来其实并不完整,因为同样你还可以问是学习Flutter开发还是学习iOS开发?是学习Flutter开发还是学习Web开发?

通过这次的Developer
Keynote我们可以看出,Flutter是一种跨平台技术,而不属于Android技术,Google的Android团队对于Flutter只字未提,而是建议使用Kotlin语言来进行开发。那么Google为什么还要开发Flutter技术呢?因为跨平台开发市场即使Google不做也会有其他公司去做,比如FaceBook的RN,阿里的Weex。因此Flutter实际上是在和这些公司的产品抢市场,而不是在和自己的Android团队抢市场。


所以这种问题其实没有什么标准的答案,你喜欢哪个技术就可以去学哪个技术,Flutter和Android并不是那种二选一的关系,而是一种共生的关系。Flutter团队会继续完善这个跨平台开发的框架,Android团队也会继续发展自己的原生开发环境,它们都有着各自的优势,相信未来也都会变得更加美好。

好了,关于这次Google I/O
2019大会的所有重要内容我都汇集在这一篇文章当中了。文章比我预想的要长一些,为了写这篇文章花了我大约四天的时间。但是把将近三个小时的会议内容压缩到这样一篇文章里我认为还是相当值得的,至少帮大家节省了一大部分时间。

最后再附上一些我认为比较重要的Android主题会议的Youtube观看地址,感兴趣的朋友可以自行去学习(需科学上网)。

What’s New in Android
https://www.youtube.com/watch?v=td3Kd7fOROw
<https://www.youtube.com/watch?v=td3Kd7fOROw>

What’s New in Architecture Components
https://www.youtube.com/watch?v=Qxj2eBmXLHg
<https://www.youtube.com/watch?v=Qxj2eBmXLHg>

What’s New in Kotlin on Android
https://www.youtube.com/watch?v=8rYLFD1ZfnM
<https://www.youtube.com/watch?v=8rYLFD1ZfnM>

Android Jetpack: Understand the CameraX Camera-Support Library
https://www.youtube.com/watch?v=kuv8uK-5CLY
<https://www.youtube.com/watch?v=kuv8uK-5CLY>

Build a Modular Android App Architecture
https://www.youtube.com/watch?v=PZBg5DIzNww
<https://www.youtube.com/watch?v=PZBg5DIzNww>

Build Apps for Foldable, Multi-Display, and Large-Screen Devices
https://www.youtube.com/watch?v=8uQEzv3upy8
<https://www.youtube.com/watch?v=8uQEzv3upy8>

Understand Kotlin Coroutines on Android
https://www.youtube.com/watch?v=BOHK_w09pVA
<https://www.youtube.com/watch?v=BOHK_w09pVA>

Android Studio: Tips and Tricks
https://www.youtube.com/watch?v=ihF-PwDfRZ4
<https://www.youtube.com/watch?v=ihF-PwDfRZ4>


关注我的技术公众号,每个工作日都有优质技术文章推送。

微信扫一扫下方二维码即可关注:

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信