关于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组织和演讲的人们。

广告
将在 10 秒后关闭
bannerAds