历届Google I/O汇总
Google I/O是由Google举行的网络开发者年会,讨论的焦点是用Google和开放网络技术开发网络应用,Google I/O 寓为“开放中创新”(Innovation in the Open),已举办过11届,分别是2008年5月28日到29日,2009年5月27日到28号,2010年5月19日到20日, 2011年5月10日到11日, 2012年6月27日到29日,2013年 5月15日到17日,2014年6月26日到28日,2015年5月29日,2016年5月18日至20日,2017年5月17日至20日,2018年5月8日至10日。会议的形式类似于Google开发者日。
Google I/O 寓为“开放中创新”(Innovation in the Open),
也表示“输入/输出”(Input/Output),I和O形似二进制码中的1和0也被理解为Google I/O的另一层意思,但这不是官方解释,也不是大会的关注点。
历届大会
Google I/O 2008
第一届Google I/O于2008年5月28日到29日举办。在这次大会上,Google发布了Google Web Toolkit 1.5候选版发布,支持Java 1.5的新功能,并且提高了性能。同时宣布Google App Engine面向任何人,不再需要审核并确认服务价格。
Google I/O 2009
第二届Google I/O于2009年5月27日到28日举办。在这次大会上,
Google提出了几个如今我们耳熟能详的产品和技术,比如:Android、App Engine、Chrome、Google Web Toolkit(GWT)、OpenSocial、Google AJAX APIs和Google Wave。
Google I/O 2010
第三届Google I/O于2010年5月19日到20日举办。在这
次大会上Google发布了Android 2.2操作系统,并WebM、VP8开源。
Google I/O 2011
第四届Google I/O于2011年5月10日到11日举办。大会的第一天中心
议题完全是围绕Android展开的,包括发布相关运营数据和新的Android 3.1,也发布了Music Beta的音乐服务。第二天中心议题则是围绕着Chrome和Google Chrome OS展开,并发布了装载Google Chrome OS系统的笔记本Chromebook。
Google I/O 2012
第五届Google I/O于2012年6月27
日到29日举办。在这次大会上,Google一共发布了Nexus 7平板电脑、Nexus Q媒体串流设备、Google Glass三款硬件产品和Android 4.1操作系统,并并公布了Andriod设备、应用商店、Google+的最新运营数据。
Google I/O 2013
2013年,5月15日到17日在旧金山Moscone中心举办,Youtube将会在线直播这届大会。
13年的Google I/O大会为期3天,预计谷歌将在此次大会上公布有关Android的许多消息。谷歌提供的日程表中包括了每个研讨会的时间和地点,以及会议主题和发言人的详细信息。开发者可根据不同需要参与不同的研讨会。
对于未能现场参与Google I/O大会,但关心此次大会的科技行业人士来说,这一日程表暗示了谷歌可能发布一些重量级产品的时间。此次的Google I/O大会只有一次主题演讲,并将在YouTube上进行直播。
Google I/O 2015
2015年5月29日,谷歌举行2015年I/O
Google I/O 2016
2016年的第八届谷歌I/O开发者大会将有很多针对虚拟现实技术的环节,包括谷歌新任虚拟现实部门主管克雷·贝沃(Clay Bavor)的重要演讲。谷歌一向喜欢在I/O开发者大会上公布各种重大创意,如Android Wear、Google Glass和Google Cardboard。 [3]
2016年5月19日凌晨1:00谷歌开发者大会正式拉开帷幕,大会发布了Google智能应用Allo和智能视频通话Duo。 [4]
Allo的使命是让人们能够更加自然高效地通过IM应用表达自己的想
法。Allo的WhisperShout功能允许用户在打字时通过上下滑动改变字体及表情的大小,用图文的形式来实现强调或耳语的效果。 [4]
Allo可以提供智能回复选项,不仅能回复文字,还能发送Emoji或图片表情。当对方发过来一张照片时,Allo依旧能够识别照片内容并提供智能回复选项。Allo图片回复的精准率高达90%,因为Allo集合了Google的计算机视觉识别和自然语义技术。 [4] 还允许在Wi-Fi和移动网络中无缝切换,Google在Duo中应用了WebRTC和QUIC技术。WebRTC是网页实时通信(WebReal-TimeCommunication)的缩写,支持网页浏览器进行实时语音对话或视频对话的技术。 [4]
Allo和Duo都将在2016年夏天上线供用户下载使用,这两款APP支持Android和iOS双平台运行。 [4]
Google I/O 2017
2017谷歌I/O全球开发者大会,于2017年5月17日至19日在美国加州山景城海岸线圆形剧场(Shoreline Amphitheatre)举行。
谷歌在本次大会上充分介绍了人工智能在各个领域的应用,还推出iOS版语音助手、Android O最新版本和VR眼镜系列 [1] 。
主要事件:
- Google 正式宣布进入人工智能时代
- Kotlin 成为 Android 官方编程语言
Google I/O 2018
美国当地时间5月8日,2018年 Google I/O开发者大会在美国加州山景城拉开帷幕。
这是全球5月份最盛名的一次开发者大会,即使你不是一名专业的技术人员,你也可以从中获取不少前沿性的内容——当然,它更是程序开发者们的特殊节日,在I/O大会开始之前,相关网站就已经浓墨重彩开始了宣传(作为Android开发者,笔者惊奇地发现Android Developers官方网站也迎来了全新的改变)。
在本届大会上,AI(人工智能)成为贯穿全场的主题。谷歌不仅发布了新一代为机器学习定制的芯片TPU(张量处理器)、结合了AI技术的 Android P ,还升级了不少AI应用 ——不难发现,Google 把开发重心更多放到了AI上面,除此之外,移动端技术和 前端技术 的发展也在Google的重点关注之中,这之后,谷歌还谈到了在自动驾驶领域和TPU芯片研发的新进展。
一.AI的演示——Google Assistant
本次大会上,Google Assistant向全场展示了AI技术的迅猛发展:用户对Google Assistant说想剪头发,GoogleAssistant立即拨通了理发店的电话,并进行预约剪发。
在整个 剪发预约 的过程中,Google Assistant展示出了一场流利的交流:在理发店说出“我需要查查Jim老师的档期,稍等”时,Google Assistant出乎意料的一句“Mm-hmm(嗯哼)”惊艳全场—— 对于AI来讲,根据不同情境发出对应的 语气词,这种 自然的方式 向对方示意,使会话变得摆脱了生硬感。
二.Android P
最新的Android P系统中,更加注重人工智能方面的探索,也推出了众多的新功能,比如下面这些:
Google Assistant
推出Android设备的 刘海全面屏
全新的音量调节显示效果
适配全面屏,将Bottom传统的Menu,Home,Back键替换成了药丸按键
推出 省电模式(Adaptive Battery)
更多 AI 相关功能的支持,比如电量优化
三.Android Jetpack
在本次开发者大会上,Google发布了Android Jetpack,这是我们的新一代 组件、工具和架构指导 ,旨在加快开发者的 Android 应用开发速度。
这对 Android原生开发 来讲,无疑是个 重磅炸弹,众所周知,2017年的GoogleIO大会上,官方为Android开发者推出了 一系列的 架构组件,比如 Lifecycle,LiveData,Room,ViewModel等,旨在推出 官方认证 的 Android架构 方案。
而本次IO大会上,Android Jetpack的推出,从 架构(Architecture),UI,基础(Foundation)及行为(Behavior)四个方面,推出了一套 官方认证 的 开发体系。
让我们通过一张图了解 Android Jetpack 的详细组成:
本次的 Android Jetpack 推出了五个新组件,它们分别是:
- Navigation
- Paging
- WorkManager
- Slices
- Android KTX
Navigation——导航组件
Navigation的作用正如其名,为页面的跳转做 导航 ,更准确的来讲,Navigation是 单Activity多Fragment 开发模式下的页面跳转的 导航组件。
说到Fragment的栈管理,一直都是很令人头痛的问题,当然,Github上也有一些很优秀的三方库可以解决这个问题,比如著名的 Fragmentation 。
官方的介绍文档中,Navigation具有以下强大的导航功能:
利用导航组件对 Fragment 的原生支持,可以获得架构组件的所有好处(例如生命周期和 ViewModel),同时让此组件为您处理 FragmentTransaction 的复杂性。此外,Navigation组件还可以让您声明我们为您处理的转场。它可以自动构建正确的“向上”和“返回”行为,包含对深层链接的完整支持,并提供了帮助程序,用于将导航关联到合适的 UI 小部件,例如抽屉式导航栏和底部导航。
不难看出,Navigation作为Fragment栈管理的 官方解决方案,还是很强大的,和其它三方库相比,它拥有的优势有:
专业的 开发/维护 和 测试 团队,保证代码的质量及稳定性;
AndroidStudio IDE专属支持,包括可视化的编辑界面,和通过鼠标拖拽对Fragment的导航管理功能;
对ViewModel,Lifecycle等 官方架构组件 的支持;
官方针对迁移至Navigation 的流程提供了详细的文档;
更多Android开发者会使用它,您可以在网上获取非常详尽的学习资料;
Google爸爸官方出品,无脑支持。
抛开比较性的话题不谈(StoryBoard VS Navigation?),笔者认为这个库还是有学习的必要性的——当然,它的优先级不高,因为不是任何项目都是 单Activity多Fragment的架构,但是,作为本次 Android Jetpack力推的组件之一,我们有必要在新的项目中或者重构中,在对Fragment的设计时,优先考虑 使用 Navigation。
关于Navigation更详细的内容,可以参考笔者的《Android Jetpack Navigation:大巧不工的Fragment管理框架》这篇文章:
https://www.jianshu.com/p/ad040aab0e66
Paging——分页组件
对于Android开发中的 数据列表展示 ,很多时候我们需要对数据进行 分页加载,这时候我们可以考虑 使用 Paging。
让我们来看看官方对于 Paging 的相关介绍:
应用中呈现的数据可能非常大,这就导致加载的开销比较大,因此,避免一次下载、创建或呈现过多数据就显得非常重要。 分页组件 让您可以轻松加载和呈现大型数据集,同时在您的 RecyclerView 中进行 快速、无限滚动。它可以从本地存储和/或网络加载 分页数据,并让您能够定义内容的加载方式。此组件原生支持 Room、LiveData 和 RxJava。
Android系统对大量数据的列表展示,RecyclerView 绝对是不二之选,但是关于数据的分页展示,目前有很多种解决方案。而本次IO大会,谷歌推出了这款 Paging,它和其它三方库相比,其优势有:
专业的 开发/维护 和 测试 团队,保证代码的质量及稳定性;
原生支持Room、LiveData 和 RxJava;
官方针对分页库 迁移至Paging 的流程提供了详细的文档;
更多Android开发者会使用它,您可以在网上获取非常详尽的学习资料;
Google爸爸官方出品,无脑支持。
令人振奋的是,Paging 不但提供了对 LiveData 以及 Room的原生支持,更是提供了对 RxJava 的官方原生支持,这也侧面反映了 Google 对 RxJava 的认可肯定。
作为 业务层 和 UI层 的链接, Paging 分页库的适用场景是非常多的,在新项目的架构或者项目重构中,它是一个优先级比较高的选择—— 当然,如果您对于 RxJava 情有独钟,Paging 这个令人振奋的额外支持一定不会让您失望。
关于 Paging 更详细的内容,请参考:https://developer.android.com/topic/libraries/architecture/paging/
WorkManager
WorkManager是一个很新颖的库,它的作用一句话概述就是:
管理一些要在后台工作的任务, ——即使应用没启动也能保证任务能被执行。
和 RxJava 以及 AsyncTask 不同的是,前者帮助你在应用中开后台线程干活, 但是应用一被杀或被关闭, 这些工具就干不了活了。
而WorkManager不是, 它在应用被杀, 甚至设备重启后仍能保证你安排给他的任务能得到执行。
它的特点在于:
易于安排:您可以在 特定条件 下启动任务,同时,任务之间可以相互链接,这意味着,你可以将任务 串行 或者 并行 执行。
易于取消:您拥有对任务执行的控制权,通过API您可以轻松取消计划任务。
易于查询:您可以将任务进度展示在各种各样的UI上。
支持所有Android版本!:就像描述的一样,各个Android版本下,WorkManager的API都是一致的。
听起来很棒,看到这些特性时,我第一感觉就是APP定时唤醒的功能——流氓软件再次迎来了春天?
WorkManager 的上手难度并不大,关于 WorkManager 更详细的内容,这里有一篇文章也许能有所参考:https://juejin.im/post/5af4aa91f265da0b8d41f714
Slices —— 切片
Slices 提供了一系列 UI 模板,帮助开发者在应用中呈现丰富的动态交互式内容,支持所有 Android 系统以及提供谷歌服务的平台 。
Android Jetpack内置了对Slices的支持,并可以最低支持Android 4.4——大约占所有Android用户的95%。
这是一个很有趣的特性,在公司内部的交流会的演示中,通过Google 搜索引擎进行关键字检索时,如果APP配置了Slices,可以在Google搜索结果中显示来自APP的丰富,动态和交互式内容。
四.Kotlin的上位 & Android KTX
如果说,去年的Google IO大会掀起了一波 Android开发者们对于 Kotlin 语言学习的热潮的话,那么今年的 IO大会,Google向我们展示出了 Kotlin 排山倒海般势不可挡的推动。
在今年的 Google I/O 大会上,关于 Kotlin,Google 只说了 只言片语:
在过去一年里,Play Store 中用 Kotlin 开发的应用在去年增至 6 倍,在高级开发者中有 35% 的人选择使用 Kotlin 进行开发,95% 的开发者表示很喜欢用 Kotlin 进行 Android 的开发,而且这个数字正在逐月递增。
同时,Google 会继续改善 Kotlin 在支持库、工具、运行时 (runtime)、文档以及培训中的开发体验。Google 在今年2月发布的 Android KTX,也会包含在上面提到的 Android Jetpack 中,力图优化 Kotlin 开发者体验;同时继续改善 Android Studio、Lint 支持以及 R8 优化中的工具;而且对 Android P 中的运行时 (Android Runtime) 进行微调,以此加快 Kotlin 编写的应用的运行时间。
这之后,Google就没有再宣布关于 Kotlin 的重大消息或规划了。但是细心的同学可以发现,Google 对于 Kotlin 的 偏向 已经 十分明显:无论是今年IO大会的 代码展示,还是官方文档上的 代码示例,亦或是Google最新 开源Demo的源码,都是以 Kotlin语言为主。
时至今日,我认识的不少小伙伴,对于Kotlin语言都仍旧保持观望的态度,理由大概都是相似的:
我 简单学习 了Kotlin,但是我并不太会用,因为我没有机会在项目中使用它;
Kotlin相比于Java, 依然还是太年轻,对于成熟的项目来讲,Java依然是短时间不可替代的
类似种种,事实证明,一年过去了,理由还是一年前的理由,但是 Kotlin 发展的势头已经 突飞猛进,如果说,去年的此时,熟练使用Kotlin语言进行开发 是个人简历中的一大亮点,也许不到明年,这个技能点就将是各中大型公司招聘时 最基本的一个门槛 了。
这也许有点危言耸听,但事实上,作为一个开发人员,对 新技术 的持续关注以及 个人学习能力 都是各互联网公司所看重的——对于Android开发来讲,Kotlin的使用就是这样的一个典型。
五.AndroidWear
本次大会上,Google发布了新的 Wear OS的 开发者预览版,为 Wear OS 带来 Android P 平台的心功能。对 Wear OS 中国版的开发者,Google特别提供了一个更新的模拟器镜像以及可以刷到华为第二代智能运动手表(蓝牙版)上的系统镜像。
本次关于AndroidWear的更新主要包括以下几点:
全新省电模式
更多功耗优化,包括蓝牙连接断开时关闭 Wi-Fi 以及 后台活动与前台服务限制
通知智能回复
我是Google的粉丝,但是说实在的,Android端的智能手表,我实在无法昧着良心为它洗地 [捂脸]。
笔者负责的项目有 AndroidWear 的相关项目,但该 Wear 项目主要功能也是通过 蓝牙 连接以及将 数据传递 给手机端应用,更多功能,AndroidWear还不能够完全的胜任——最主要的是,开发调试时,AndroidWear使用起来的 繁琐 有时真的令人发狂。
无论是AppleWatch,还是Android Wear,所能提供的生活帮助都是有限的,直白点说吧, 我没钱买这么一款性价比不高的产品。
性价比不高并不代表 智能手表 不好,但一定是导致其 销售市场表现不佳的最主要的原因之一,屏幕比较小 ,加上 科技发展 所能带来的 智能化 还不足,Android Wear的这次更新只能沦为配角。
六.Android Things
本次大会,Google正式发布了 AndroidThings 的1.0版本。Android Things 是 Google 的托管操作系统,可以让您大规模构建和维护物联网设备。运用 Google 的后端基础设施,我们通过认证硬件、丰富的开发者 API 和安全的托管软件更新提供了一个可靠平台,它可以完成众多繁重的工作,让您将精力集中在构建产品上。
一句话说,Android Things就是让开发者 可以使用Android开发工具开发嵌入式设备—— 只要你会开发APP,你就能开发智能设备。
如今的Android开发,纯原生软件开发的竞争力逐渐变弱,而无论是 Linux,还是RN,亦或是人工智能,这些方向对于单一的技术栈都是一个强力的补充。
而闲暇时间,通过 AndroidThings 的机会,尝试横向学习一些东西,比如Linux,顺便开发一些有趣的小零件,还是比较有趣的。
笔者对此涉猎不多(买的Raspberry Pi 如今还在家里吃灰w),这里
推荐一个收藏的AndroidThings的博主,有很多AndroidThings的文章可以学习一下:
https://www.jianshu.com/ www.meiwanyule.cn u /c08ebd48644f
七.ARCore
Google 今年发布的ARCore,是基于Android 平台的增强现实软件工具开发包,为 Android 设备带来 AR(增强现实)体验。使用 ARCore 构建的应用程序可以识别用户所处的环境,并将物体和信息呈现其中,为用户带来很多既有用又充满乐趣的体验。
目前部分应用了ARCore 的APP已在小米应用商店上线,可在搭载ARCore 的小米MIX 2S上运行。
通过AR,似乎已经可以在家模拟家具摆放,并且下单购买了,看起来Amazing,实际上使用起来还是有一定的误差的。
经过这些年的发展,AR的技术 逐渐成熟,并且能够有各自的适用场景,但是目前它依然是一门比较 小众 的技术,并且对于开发团队有着一定的要求。
如果您对于ARCore比较感兴趣,您可以参考GoogleARCore的官方网站:
https://developers.google.com/ar/
八.Instant app
Instant app 是谷歌推出的类似于 微信小程序(或者说小程序类似于instant app)的一项技术,用户无须安装应用,用完就走,同时兼备h5的便捷和原生应用的优质体验。
听完上面的简介,除了 微信小程序,我们不禁联想到了不久前 九大手机厂商推出的 快应用。相似的点有,使用前端技术栈开发,原生渲染,同时具备H5页面和原生应用的双重优点。
InstantApp是Google推出的一个尝试,对于国内的Android开发环境来说,影响或许不大,原因和Slices相似,InstantApp的实现也是需要用户手机中安装 Google play。
如何快速创建一个InstantApp,这里有一篇文章《instant app入门和开发指南》,讲解的比较详细:
http://renyugang.io/2018/05/24/instant-app%E5%85%A5%E9%97%A8%E5%92%8C%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/
总结
本次IO大会上,还有更多的新鲜好玩的技术被提出,比如 MachineLearning的 TensorFlow ,升级后的 MaterialDesign ,跨平台开发框架 Flutter,web端的Progressive Web App(PWA),以及 VR 等等。
站在Android开发人员的视角而言,我们可以看到,技术正在不断朝着 前端 方向以及 人工智能 的大方向发展着,这意味着,在不久的将来,掌握着 前端开发能力 的Android工程师将会比 原生Android开发工程师 更受青睐,我们在不断提高Android技术栈的同时,横向的技术拓展亦是值得去 自我投资 , 而前端技术和移动端技术贴合也逐渐紧密,是一个非常好的选择。