关于Android通信环境(Swagger、gRPC、GraphQL)的备忘录 – DroidKaigi2018参与记录
首先
在DroidKaigi2018上,我有幸被Wantedly赞助的奖学金计划选中,参与了会议。在会议期间,我参加了一些讲座,特别对一些关于Android通信环境的讲座(主要包括Swagger、gRPC、GraphQL)产生了兴趣,我想写一下我的感受。
参与了会议
我已经附上了每个会议的简介以及相关演示文稿的链接。我在其中部分引用了关键词的含义,以便即使对Android等不太了解的人也可以大致理解内容。如果有任何误解,请通过编辑请求等方式告诉我。
阅读DataBinding的代码
链接
阅读DataBinding的代码 – DroidKaigi 2018 // Speaker Deck
简述
首先,数据绑定是什么意思?
数据绑定是一种将XML等数据源与用户界面静态或动态地结合的技术。来源:[Android] – 使用数据绑定进行开发 – PSYENCE:MEDIA
这个会话是关于从源代码中了解数据绑定的实现方式,对于我这个已经两年没有接触Android的人来说,有些困难。
我听说过在使用ANTLR,还稍微提及了一下语法分析。
ANTLR(ANother Tool for Language Recognition)是使用LL语法分析的解析生成器。ANTLR本身是用Java编写的,但可以生成适用于Java、C、C#、Objective-C等不同语言的解析器。
参考来源:在C++中使用ANTLR – CX5 SOFTWARE
安卓和中央处理器
链接
Android和CPU / 讲演宣讲台
总结
关于Android相关的CPU和SoC的说明
SoC是一种集成电路产品,在一个芯片上集成了处理器核心和一般微控制器具有的功能,还集成了应用特定的功能,以便协同作为一个系统进行运行设计。
为什么ARM占据了98%的Android CPU份额,为什么x86无法获得份额的背景等相关问题。
以首款Android设备采用的Qualcomm iMSM7201 SoC为起点,由此派生出Android中大多数搭载Qualcomm Snapdragon的情况等讨论。
还有最近其他公司推出的SoC等内容。
特别是在两三年前,关于安卓模拟器加速的原因有人说是因为安卓推出了x86兼容版,还有一些让人怀念的事情。
对于Meltdown和Spectre,也稍微提及了一下。
用 NDK 构建高性能的安卓应用程序的精彩世界。
链接
找不到
摘要
Google松田白朗先生和Gerry Fan先生的演讲。
如果我们想要开发游戏、图形以及高性能应用程序,就必须涉及Android NDK,因此本场演讲将全面介绍涉及NDK的开发环境、性能分析工具和技巧等内容。
Android NDK是什么?
Android Native Development Kit的简称。
它是用于使用C/C++语言开发Android应用程序的工具包,可以用来开发部分或全部的Android应用程序。
来源:试试触摸Android NDK – Qiita
将Instant Apps引入现有应用
链接 jiē)
介绍InstantApps(DroidKaigi2018) // Speaker Deck
概括
荒谷先生在CyberAgent AbemaTV FRESH!的演讲中提到了Instant Apps。他从Instant Apps的概述开始,重点讲解了为了实现Instant Apps的技巧,并对此进行了系统的模块设计解释。
即時应用是谷歌为了提升用户体验而推出的一种应用程序,用户可以在不安装应用的情况下立即运行它。当用户从谷歌搜索结果中点击URL时,即可临时下载并使用该应用的部分功能,只需下载所需的功能即可。这样一来,可以省去安装应用的麻烦,并实现加速。
引用来源:Android Instant Apps是什么 | SEO研究所 Sakura Lab
移动设备上的TensorFlow英雄
链接
找不到
概述
在Android上使用Google开发的深度学习框架TensorFlow的方法是什么?还有一些使用示例。
开始时,我们使用Bazel来构建Android上的TensorFlow,然后介绍一些基础知识,比如分类示例、检测示例和分析示例。
Bazel是一种基于Google内部使用的自家产品构建工具Blaze的构建工具。目前它还处于测试版状态,但有人认为它将成为未来面向Android开发的标准构建工具。
有关Android通信环境的讨论(Swagger、gRPC、GraphQL)
在DroidKaigi2018的会议中介绍了关于服务器和客户端(Android)之间的API通信的三种方法。分别介绍了Swagger(框架)、gRPC(协议)和GraphQL(查询语言)的会话。
[进行中]欢迎来到美妙的GraphQL世界(SEKAI)。
链结
欢迎来到美妙的GraphQL世界!// Speaker Deck
总结
有关GraphQL的会议。
GraphQL是由Facebook开发的开源语言。它可以用作REST的替代方案,用于API的创建机制。REST是用于API设计和实施的概念性设计模型,而GraphQL具有标准化的语言、类型和规范,强大地连接客户端和服务器。通过具有标准化语言的不同设备之间的通信,大型且跨平台的应用程序开发变得更加简单。
如果Web API被替换为GraphQL而不是REST,那么对于安卓工程师而言也是有关联的。请您对GraphQL进行全面的解释,包括与RESTful API相比的优点和缺点,以及在Java/Kotlin中如何使用。
GraphQL是一种专注于获取资源的WebAPI规范(可以从请求到响应的结构中理解,并只请求所需的字段),因此它符合HTTP通信协议。
下面的链接对比展示了GraphQL和REST的区别:
– https://www.slideshare.net/atsu666/rest-graphql-75297436
– https://www.webprofessional.jp/rest-2-0-graphql/
此外,还提到了Facebook开发的基于React的视图框架Relay,专门用于GraphQL的应用。
Relay是用于开发数据驱动型React应用程序的JavaScript框架。Relay与React一样,是由Facebook开发的。通过使用Relay,可以轻松地将从服务器获取的数据传递给React组件,并使用”props”进行传递。
来源:https://mae.chab.in/archives/2732
使用gRPC和协议缓冲区构建独特的通信环境。
链接
2018年DroidKaigi会议gRPC/Protobuf // 演讲者PPT
总结
关于使用gRPC+Protocol Buffers而不是REST+JSON作为服务器和客户端(Android)之间的API通信的选择,我已经解释过了。gRPC和Protocol Buffers都是由Google开发的相对较新的通信框架和序列化格式。对于接触过DeepLearning的人来说,他们可能会知道在Distributed TensorFlow中使用了gRPC,在Caffe中使用了Protocol Buffers,也许对这些都比较熟悉。
gRPC 是指使用 Google 的 Protocol Buffers 进行远程过程调用(RPC)。
请分享如何在Android应用开发中使用gRPC + Protocol Buffers,以及其优缺点以及您在开发过程中的一些方法和技巧。
[进行中] 你还在费劲地管理API定义吗?〜使用Swagger进行大规模应用时代的API定义管理和代码生成〜
链接
你还在为API定义管理而烦恼吗?~ 使用Swagger进行大规模应用程序时代的API定义管理和代码生成 ~ // Speaker Deck
summary
当前的应用程序开发越来越大规模化,移动应用程序工程师和服务器端工程师通常会分工合作进行开发。
在这种情况下,需要进行顺畅的沟通,包括规范和API定义的协商,以及对变更信息的共享。
此外,对于API定义的变更,移动应用程序需要迅速跟进,确保没有遗漏。
本次会议将重点介绍使用Swagger来管理API定义。
同时,我们介绍使用Swagger自动生成从API定义到JSON映射对象的方法,以减少工作量、提高质量,并提高生产力。
Swagger是什么?
使用Swagger进行API定义
在Android中使用Swagger Code Generator进行代码自动生成
(如果有时间)关于mustache语法的介绍
总结
这次是我第一次参加DroidKaigi,我亲身感受到了Android开发者的热情和活力,最让我惊讶的是有这么多开发者存在。另外,关于通信方面的讨论不仅仅适用于Android,我觉得非常有参考价值。
再次衷心感谢Wantedly株式会社提供的奖学金援助,感谢所有参与DroidKaigi2018组织和演讲的人们。